CMake target_link_libraries 转换导致链接器 "not found" 错误的路径
CMake target_link_libraries converting path which results in linker "not found" error
我正在使用 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
后再次 cmake .
(不改变任何东西),它将从使用 -lmymodule
切换到 [=17= 的实际路径],它起作用了。如果我删除 PROPERTIES PREFIX ""
,它也有效。
由于我在 target_link_libraries()
中指定了 mymodule.so
路径,我怎样才能让 CMake 停止将其转换为搜索名称 (-lmymodule
)?
我正在使用 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
后再次 cmake .
(不改变任何东西),它将从使用 -lmymodule
切换到 [=17= 的实际路径],它起作用了。如果我删除 PROPERTIES PREFIX ""
,它也有效。
由于我在 target_link_libraries()
中指定了 mymodule.so
路径,我怎样才能让 CMake 停止将其转换为搜索名称 (-lmymodule
)?