跳转到内容
新建笔记

CMake 包含与链接目录

这个命令会将指定的目录添加到编译器的头文件搜索路径中,以便编译器可以找到在源代码中用 #include 指令包含的头文件。

include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...])
include_directories(/path/to/include) # 把 /path/to/include 添加到头文件搜索路径中。
include_directories(/path/to/include1 /path/to/include2) # 添加多个目录
include_directories(AFTER SYSTEM /path/to/system/includes) # 将把包含系统头文件的路径添加到搜索路径的末尾,并且这些路径中的警告将被忽略
include_directories(BEFORE /path/to/custom/includes) # 将把自定义的头文件路径添加到搜索路径的开头
# 因为它允许您更精确地指定哪个目标(可执行文件或库)需要哪些头文件路径。这有助于避免不同目标之间的头文件路径冲突。
# 将只为 my_app 目标添加头文件搜索路径,而不会影响其他目标
target_include_directories(my_app PRIVATE /path/to/includes)
  • AFTER:指定添加的目录应该在默认的系统头文件目录之后搜索。
  • BEFORE:指定添加的目录应该在默认的系统头文件目录之前搜索。
  • SYSTEM:如果使用此关键字,CMake 将为这些目录添加编译器的 SYSTEM 标志(如果可用),这可以抑制某些警告。
  • dir1 [dir2 ...]:一个或多个目录路径,这些路径将被添加到头文件搜索路径中。

用于向项目添加链接器的搜索路径。这些路径将被用于查找链接时所需的库文件。命令添加的路径对所有目标都是全局有效的,这意味着在项目中的任何目标都会搜索这些路径下的库文件。

link_directories([path1] [path2 ...]) # [path1] [path2 ...]:一个或多个路径,这些路径将添加到链接器的搜索路径中。
# 将只为 my_app 目标添加链接路径,而不会影响其他目标。
target_link_directories(my_app PRIVATE /path/to/libs)