在target_include_directories目录下,运行cmake .以及make VERBOSE=1,关键输出: $ cmake.……# In parent scope, target main: interface[], normal[/XXX/target_include_directories]$ make VERBOSE=1……/usr/bin/c++-MD-MT CMakeFiles/main.dir/main.cpp.o-MF CMakeFiles/main.dir/main.cpp.o.d-o ...
target_include_directories()的功能完全可以使用include_directories()实现。但是我还是建议使用target_include_directories()。为什么?保持清晰! include_directories(header-dir)是一个全局包含,向下传递。什么意思呢?就是说如果某个目录的 CMakeLists.txt 中使用了该指令,其下所有的子目录默认也包含了header-dir目录。
1. include_directories:当前CMakeList.txt中的所有目标以及所有在其调用点之后添加的子目录中的所有目标将具有此头文件搜索路径 2. target_include_directories:指定目标包含的头文件路径。 include_directories 语法 1 include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 …]) 例句: 1 include_directories(/...
link_directories会对当前CMakeLists.txt文件的目标文件生效,并会通过add_subdirectory调用传递到子目录;target_link_directories则针对指定的目标文件生效。 target_link_directories对于指定目标添加的目录,INTERFACE和PUBLIC会添加到<target>的INTERFACE_INCLUDE_DIRECTORIES属性,PUBLIC和PRIVATE会添加到<target>的INCLUDE_DIRECTO...
target_include_directories(mylib PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/mylib> $<INSTALL_INTERFACE:include/mylib> # <prefix>/include/mylib ) 创建可重定位包 请注意,不建议使用依赖项包含目录的绝对路径填充目标的INSTALL_INTERFACE或INTERFACE_INCLUDE_DIRECTORIES。这会将依赖项的包含...
include_directories()的影响范围最大,可以为CMakelists.txt后的所有项目添加头文件目录 一般写在最外层CMakelists.txt中影响全局 target_include_directories target_include_directories()的影响范围可以自定义。如加关键子PRIVATE或这PUBLIC。 一般引用库路径使用这个命令,作为外部依赖项引入进来,target是自己项目生成的li...
include_directories(/common/include) # 子目录CMakeLists.txt # 可能需要重复指定包含目录 include_directories(/common/include) 3.2.3 最佳实践 明确作用域:在项目的不同层级清晰地设置和管理作用域,以确保路径设置正确地应用。 **使用target_include_directories**:与include_directories相比,target_include_directori...
include是包含目录 src是子函数的目录或是依赖文件的目录 main.cpp主函数 从上图的右边可以发现src里存在add.cpp和一个对应的cmakelists.txt文件,同时根目录下也存在一个cmakelists.txt文件 main.cpp #include<iostream> #include"include/add.h" using namespace std; ...
当运行CMake命令时,它会首先查找根目录下的CMakeLists.txt文件,然后递归地处理每个子目录中的CMakeLists.txt文件。每个CMakeLists.txt文件都会生成一个对应的Makefile。 在这个过程中,CMake会处理CMakeLists.txt文件中的指令,如add_executable、add_library、target_link_libraries等,并将这些指令转换为Makefile中的...
使用命令include_directories:该命令用于添加包含文件的目录路径,可以是绝对路径或相对路径。例如:include_directories(/path/to/include) 使用命令link_directories:该命令用于添加链接库的目录路径,可以是绝对路径或相对路径。例如:link_directories(/path/to/lib) 使用命令target_include_directories:该命令用于为特定目标添...