三、CMake构建文件——编写
目标对象包含的(add_executable和add_library的target)
1 target_include_directories
target_include_directories(<target> [SYSTEM] [AFTER|BEFORE]
<INTERFACE|PUBLIC|PRIVATE> [items1...]
[<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
该命令用于为特定目标 target
添加头文件目录。
参数说明:
-
<target>
构建目标,使用add_executable()
或add_library
声明,不可为 ALIAS 目标。 -
[SYSTEM]
指定是否平台相关,若该属性与 PUBLIC 或 INTERFACE 一同设置,CMake 将使用指定的目录初始化目标的 INTERFACE_SYSTEM_INCLUDE_DIRECTORIES 属性;- INTERFACE_SYSTEM_INCLUDE_DIRECTORIES: 该属性为含有平台相关头文件的目录,常用于抑制编译器警告;
-
[AFTER|BEFORE]
指定相应目录添加的顺序,在后添加/在前添加。 -
[INTERFACE|PUBLIC|PRIVATE]
指定头文件的可见性,若设置 PRIVATE 或 PUBLIC,CMake 将使用指定的目录初始化目标的 INCLUDE_DIRECTORIES 属性,若设置为 PUBLIC 或 INTERFACE,CMake 将使用指定的目录初始化目标的 INTERFACE_INCLUDE_DIRECTORIES 属性;-
INCLUDE_DIRECTORIES: 该属性为目标的头文件目录;
-
INTERFACE_INCLUDE_DIRECTORIES: 该属性为目标的开放头文件目录;
-
-
[items]
指定要添加的头文件目录,可以使用相对路径或绝对路径,相对路径为相对于当前路径 CMAKE_CURRENT_SOURCE_DIR,也可以使用 CMake 提供的 generator expression。
2 target_link_directories
target_link_directories(<target> [BEFORE]
<INTERFACE|PUBLIC|PRIVATE> [items1...]
[<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
3 target_link_libraries
target_link_libraries(<target> ... <item>... ...)
4 include_directories
所有目标对象都会包含该头文件目录include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...])
5 link_directories
所有目标对象都会包含该链接目录link_directories([AFTER|BEFORE] directory1 [directory2 ...])
6 link_libraries
所有目标对象都会包含该链接库link_libraries([item1 [item2 [...]]]
[[debug|optimized|general] <item>] ...)