我正在使用CMake为外部应用程序构建一个模块。作为构建的一部分,我还将生成一个可执行文件,该文件链接模块以运行测试。但是,作为外部应用程序的模块约定的一部分,模块名称不应具有
lib
前缀这将导致以下结果:
CMakeLists.txt
:
add_library(mymodule SHARED mymodule.c)
set_target_properties(mymodule PROPERTIES PREFIX "")
add_executable(mytest mytest.c)
target_link_libraries(mytest ${CMAKE_BINARY_DIR}/mymodule.so)
构建时,CMake正在将路径转换为搜索名称,这会导致错误:
/usr/bin/ld: cannot find -lmymodule
如果我跑
cmake .
之后再次(没有任何改变)
mymodule.so
一旦建成,它就不再使用
-lmymodule
到
我的模块。所以
,而且有效。如果我移除
PROPERTIES PREFIX ""
,它也有效。
因为我指定了
我的模块。所以
内部路径
target_link_libraries()
,如何让CMake停止将其转换为搜索名称(
-lmymodule
)?