如何在CMake项目中正确包含库

时间:2018-03-16 11:51:10

标签: c++ cmake dlib

例如,我有一个看起来像这样的项目:

project/
  subproject/
     CMakeLists.txt
     file1.h

  CMakeLists.txt
  main.cpp

项目/的CMakeLists.txt

project(some_project)
add_subdirectory(subproject)
set(SOURCE_FILES main.cpp)
add_executable(main ${SOURCE_FILES})
target_link_libraries(main subproject)

项目/子项目/的CMakeLists.txt:

project(subproject)
add_library(subproject_lib INTERFACE)
target_sources(subproject_lib INTERFACE file1.h)
target_include_directories(subproject_lib INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})

项目/ main.cpp中

#include <file1.h>

// .. do something

现在,当我尝试构建project时,我得到了No such file or directory error

另一个例子是当我尝试包含dlib时。当我做

之类的事情
add_subdirectory(dlib-19.9)
target_link_libraries(main dlib::dlib)

这似乎与dlib自己的示例CMakeList.txt 完全相同,我收到错误。

那么,如何以正确的方式包含库?

1 个答案:

答案 0 :(得分:2)

您的图书馆名为subproject_lib,但您将mainsubproject相关联。我不知道为什么,但出于某种原因,如果目标不存在,CMake不会抱怨。