无法使用CMake链接静态库

时间:2018-11-29 18:31:18

标签: cmake static-libraries

我有以下项目结构。

<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 个答案:

答案 0 :(得分:0)

我只是在这里猜测,因为您没有显示根CMakeLists.txt中包含的内容。但是基于声明您没有为库使用add_subdirectory(exec_folder) add_subdirectory(lib_folder) 的陈述,您需要进行以下更改。

CMakeLists.txt根目录必须同时包含两者:

target_link_libraries(foo bar)

否则,将不会构建栏,bar.lib只会搜索一些随机的XXX.lib。如果错误实际上是with torch.enable_grad():,那么您会有更大的问题。