无法使用 CMake 链接静态库
Posted
技术标签:
【中文标题】无法使用 CMake 链接静态库【英文标题】:Cannot link a static library using CMake 【发布时间】:2018-11-29 18:31:17 【问题描述】:我有以下项目结构。
<root
CMakeLists.txt
<exec_folder
CMakeLists.txt
...
<lib_folder
CMakeLists.txt
...
在 exec_folder 中我有一个 CLI 可执行文件,因此故意在附加目录中创建目标。
exec_folder CMakeLists.txt
...
add_executable (foo ...)
target_link_libraries(foo bar)
lib_folder CMakeLists.txt
...
add_library(bar ...)
现在我遇到了...cannot open file 'XXX.lib'
错误。
通常我在库目录嵌套到主目录时使用add_subdirectory
,但现在它们处于同一级别。
【问题讨论】:
【参考方案1】:我只是在这里猜测,因为您没有显示根 CMakeLists.txt 中包含的内容。但根据您没有使用 add_subdirectory()
的声明,您需要进行以下更改。
根 CMakeLists.txt 需要包含两者:
add_subdirectory(exec_folder)
add_subdirectory(lib_folder)
否则将不会构建栏,target_link_libraries(foo bar)
将只是搜索一些随机的bar.lib
。如果错误实际上是XXX.lib
,那你就有更大的问题了。
【讨论】:
以上是关于无法使用 CMake 链接静态库的主要内容,如果未能解决你的问题,请参考以下文章
为啥我无法链接到使用动态并行和可分离编译的 CUDA 静态库?