CMake:target_include_directories

target_include_directories:指定目标在该路径下引入所依赖的头文件

target_include_directories( [SYSTEM] [BEFORE]
  [items1...]
  [ [items2...] ...])

其中target是通过add_executable() 或add_library() 创建的,不能是通过ALIAS重命名的。

关于INTERFACE|PUBLIC|PRIVATE请参照:

CMake:INTERFACE,PUBLIC,PRIVATE_风静如云的博客-CSDN博客

以下用一个例子进行说明该指令。

文件目录结构:

├── build
├── CMakeLists.txt
├── include
│   └── data.h
└── m.c

//m.c
#include 
#include "data.h"

int main()
{
    printf("data is %d\n", DATA);
    return 0;
}
//data.h
#define DATA    8

程序很简单,main函数需要使用头文件data.h中定义的宏DATA

#CMakeLists.txt

cmake_minimum_required(VERSION 3.5)

project(test)

add_executable(test m.c)

直接编译会报错:

m.c:2:10: fatal error: data.h: 没有那个文件或目录 #include "data.h"

需要通过target_include_directories指定头文件的路径:

cmake_minimum_required(VERSION 3.15.0 FATAL_ERROR)
project(test)
add_executable(test m.c)
#设置在程序目录下的include目录中查找头文件
target_include_directories(test PRIVATE ${CMAKE_SOURCE_DIR}/include)

 加入target_include_directories后,程序可以正常的编译了。

你可能感兴趣的:(CMake,c++)