使用cmake

时间:2016-09-27 18:00:50

标签: c++ cmake

我有这种树状结构:

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到不同的模块中。

1 个答案:

答案 0 :(得分:1)

您应该将target_include_directories与目标一起使用 举个例子:

target_include_directories(my_target PUBLIC "${Utilities_SOURCE_DIR}/include")

然后,属于目标my_target的所有源文件都可以访问标题:

#include <typedefs.h>

否则使用相对路径。