CMake的几种Include

CMake的几种Include

include_directories()
target_include_directories()
add_executable( xx.cpp     xx.h)

这三种方式都可以对当前项目添加引用路径。

include_directories()

include_directories()的影响范围最大,可以为CMakelists.txt后的所有项目添加头文件目录

一般写在最外层CMakelists.txt中影响全局

target_include_directories()

target_include_directories()的影响范围可以自定义。如加关键子PRIVATE或这PUBLIC。

一般引用库路径使用这个命令,作为外部依赖项引入进来,target是自己项目生成的lib。
如:

project(myLib)
target_include_directories(myLib PRIVATE ${OpenCV_Include_dir}

我们将${OpenCV_Include_dir}头文件库路径添加到了myLib项目

add_executable()

add_executable( )中添加的引用路径一般是当前目录下的源文件对应的头文件。是生成项目时引入的头文件。

这种方式一般用于自己写的或某项目需要的头文件,这种方式需要加添加文件名字,而非头文件目录
如:

project(addFunc)
add_executable(addFunc addFunc.h  addFunc.cpp)

嵌套头文件的引用问题。

在子项目中,include的用法可以帮助当前环境找到头文件,但在外部的项目引用子项目时,子项目中的include的相关命令对外部项目无效,外部项目的引用只与他自己的include命令相关,因此,在子项目中的源文件中尽量使用绝对路径的文件。且在子项目的CMakeLists中尽量不要使用include_directories,因为它只针对子项目,外部项目没接受到include的文件,就会报引入错误。
如:
错误示范:
子项目:
include_directories(“…/OrthophotoCU”)
源文件:
#include “global.h”
正确示范:
子项目:不加引入路径
源文件:
#include “…/OrthophotoCU/global.h”
这样外部项目引入子项目时,就可以根据子项目的路径找到相对位置的头文件了。如果是错误情况,引入了子项目头文件,在子项目的相对路径下没有"global.h"。

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页