我有这种树状结构:
Project
CMakeList.txt
-- Module 1
CMakeList.txt
-- include
-- src
CMakeList.txt
-- Module 2
-- ...
-- utilities (Headers Only - It will have .cpp probably later)
-- include
-- typedefs.h
-- ..
我希望能够将我的Utilities库用于任何模块。 我尝试过使用
https://cmake.org/cmake/help/v3.6/command/add_library.html#interface-libraries
我的实用工具cmakelist.txt
project(Utilities LANGUAGES CXX)
当我尝试包含到我的cpp文件中时
#include "utilities/include/typedefs.h"
找不到该文件。我试过:(不起作用)
#include "include/typedefs.h"
#include "typedefs.h"
我正在尝试查找我的模块CMakeList.txt文件需要做什么,以便编译器可以找到#include语句。
最高级别:
...
add_subdirectory(utilities)
add_subdirectory(Module1)
add_subdirectory(Module2)
..
我添加到顶级cmakelist.txt :(不起作用)
include_directories("${Utilities_SOURCE_DIR}/include")
我还没有链接它,因为没有.cpp文件。我只需要能够#include到不同的模块中。
答案 0 :(得分:1)
您应该将target_include_directories
与目标一起使用
举个例子:
target_include_directories(my_target PUBLIC "${Utilities_SOURCE_DIR}/include")
然后,属于目标my_target
的所有源文件都可以访问标题:
#include <typedefs.h>
否则使用相对路径。