例如,我有一个看起来像这样的项目:
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 完全相同,我收到错误。
那么,如何以正确的方式包含库?
答案 0 :(得分:2)
您的图书馆名为subproject_lib
,但您将main
与subproject
相关联。我不知道为什么,但出于某种原因,如果目标不存在,CMake不会抱怨。