什么是让cmake创建和安装具有正确的soname版本和相关符号链接的共享对象所必需的所有条件?
我最近升级了我的系统,以前与cmake 2.8一起工作的内容现在在cmake 3.7上不再适用。我检查了最新的文档,但对于我的问题无法理解。
我曾经安装了.so文件,其中实际的.so文件带有完整版本,此外还有符号链接。
我最近升级了我的系统,以前与cmake 2.8一起工作的内容现在在cmake 3.7上不再适用。我检查了最新的文档,但对于我的问题无法理解。
我曾经安装了.so文件,其中实际的.so文件带有完整版本,此外还有符号链接。
pluginname.so.1 => pluginname.so.1.1.0
pluginname.so.1.1.0
现在,cmake仅构建和安装 pluginname.so,没有任何版本后缀或符号链接。
我没有在任何地方使用 NO_SONAME:
https://cmake.org/cmake/help/v3.7/prop_tgt/NO_SONAME.html#prop_tgt:NO_SONAME
add_library(${PLUGIN_NAME} MODULE ${SRC})
# I call message(...) to check that the values are indeed set:
message("plugin ${PLUGIN_NAME}")
message("version ${CORE_MAJOR_VERSION}.${PLUGIN_MAJOR_VERSION}.${PLUGIN_BUGFIX_VERSION}")
message("soversion: ${CORE_MAJOR_VERSION}")
message("prefix ${PLUGIN_PREFIX}")
if (NOT NO_SONAME)
message("Ok, no_soname is not set!")
endif()
set_target_properties(${PLUGIN_NAME} PROPERTIES
VERSION ${CORE_MAJOR_VERSION}.${PLUGIN_MAJOR_VERSION}.${PLUGIN_BUGFIX_VERSION}
SOVERSION ${CORE_MAJOR_VERSION}
PREFIX ${PLUGIN_PREFIX}
)
install(TARGETS ${PLUGIN_NAME} DESTINATION ${PLUGIN_INSTALL_DIR})
还有哪些调试策略可以在这里使用?
我尝试更改add_library($ {PLUGIN_NAME} MODULE $ {SRC})行,将MODULE替换为SHARED,但似乎没有任何差异。
SHARED
...当你尝试时,我相信你删除了构建目录并为cmake启动了全新的配置:rm -rf build && mkdir build && cd build && cmake ..
, 是吗? - fedepad