1. 说明
在编译程序时,如果需要用到外部的头文件,而该头文件又没有被添加到系统默认的路径中(如:/usr/include,/usr/local/include和/usr/lib/gcc-lib/i386-linux/2.95.2/includ等)时,可以通过cmake的include_directories命令将该头文件添加进编译系统。
include_directories()命令
该命令将指定目录添加到编译器用于搜索包含头文件的目录路径中去。即相当于gcc编译时的"-I" 命令。当目标头文件不在编译器自动搜索的路径中时,可以使用该命令额外包含对应的头文件目录。
该命令指定的头文件将被添加进对应CMakeLists.txt的INCLUDE_DIRECTORIES属性中。
注1:如果使用相对路径,是指相对于当前源目录。
注2:该路径应该指定到头文件所在的那一层目录。
用法
include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...])
AFTER|BEFORE:用于选择将指定目录放在当前的目录列表的前面或者后面,默认情况下是AFTER。可以通过变量CMAKE_INCLUDE_DIRECTORIES_BEFORE来查询或修改。
SYSTEM:如果设置,说明有些指定的目录可能在系统自动包含的目录中,如:/usr/include。
dir1[dir2 …]:指定的头文件目录
示例
在进行cuda编程时,需要包含头文件cuda.h,但是我在安装cuda时并没有将这些头文件添加到系统包含的路径下,此时编译器会报错:
fatal error: cuda.h: No such file or directory
可以在CMakeLists.txt中添加:
include_directories ("/usr/local/include/cuda/include") # 指定cuda头文件路径