Cmake 找不到动态链接库
近期在写实验程序时需要用到一个厂商给的 SDK,那么在 cmake 里应该就是添加一个 IMPORTED
的动态库,并且配置一些参数就可以了。
add_library(NTSDK SHARED IMPORTED)
set_target_properties(NTSDK PROPERTIES
IMPORTED_IMPLIB "${CMAKE_CURRENT_SOURCE_DIR}/lib64/NTControl.lib"
)
set_target_properties(NTSDK PROPERTIES
IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/lib64/NTControl.dll"
)
但奇怪的是这段代码在项目根目录中的 CmakeLists.txt 还可以正常生成,但是当我想要将它写入子文件夹后再用 add_subdirectory
添加嵌套的 CmakeLists.txt
后,编译时却发现找不到这个库了。
[build] some/path/x86_64-w64-mingw32/bin/ld.exe: cannot find -lNTSDK: No such file or directory
反复试了几次还是不行,于是去翻看官方的文档,发现调用实例后面还有个 GLOBAL
选项。仔细一看,这个选项的作用正是令 target name 全局可见!
GLOBAL
Make the target name globally visible.
于是在子目录下的 CmakeLists.txt
中的 add_library
加入 GLOBAL
选项,就可以正常运行了。
add_library(NTSDK SHARED IMPORTED)
set_target_properties(NTSDK PROPERTIES
IMPORTED_IMPLIB "${CMAKE_CURRENT_SOURCE_DIR}/lib64/NTControl.lib"
)
set_target_properties(NTSDK PROPERTIES
IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/lib64/NTControl.dll"
)
Cmake 找不到动态链接库
https://worranhin.github.io/2024/09/14/cmake/