include_directories()的影响范围最大,可以为CMakelists.txt后的所有项目添加头文件目录 一般写在最外层CMakelists.txt中影响全局 target_include_directories target_include_directories()的影响范围可以自定义。如加关键子PRIVATE或这PUBLIC。 一般引用库路径使用这个命令,作为外部依赖项引入进来,target是自己项目生成的li...
include_directories(${PROJECT_SOURCE_DIR}/include) # 这里将子目录条件到工程,并指定编译的输出产物,默认输出产物保存到build/src文件夹下, # 如果不指定可行文件保存路径同样也会保存到该路径下 add_subdirectory(src) # 上面定义了将src子目录加入工程,并指定编译输出(包含编译中间结果)路径为 # bin目录。如果...
在CMake构建系统中,include_directories和aux_source_directory是两个常用的命令,它们都与源代码文件和头文件的组织有关,但用途和工作方式有所不同。 1.include_directories 这个命令用于向项目添加搜索头文件的路径。当你编译源文件时,编译器需要知道在哪里查找所需的头文件。使用include_directories可以指定一个或多个...
如果SYSTEM和PUBLIC或INTERFACE同时指定,target的属性INTERFACE_SYSTEM_INCLUDE_DIRECTORIES将填充指定目录。 include_directories与target_include_directories区别 include_directories 会为当前CMakeLists.txt的所有目标,以及之后添加的所有子目录的目标添加头文件搜索路径。因此,慎用target_include_directories,因为会影响全局target...
target_include_directories()的功能完全可以使用include_directories()实现。但是我还是建议使用target_include_directories()。为什么?保持清晰! include_directories(header-dir)是一个全局包含,向下传递。什么意思呢?就是说如果某个目录的 CMakeLists.txt 中使用了该指令,其下所有的子目录默认也包含了header-dir目录。
不过,值得注意的是,使用 include_directories 命令是一种全局设置,它会影响所有的 CMake 目标(例如所有的可执行文件和库)。在大型项目中,这可能会导致依赖关系混乱,特别是当不同目标需要不同的包含路径时。作为一种更现代和推荐的做法,可以使用 target_include_directories 命令来为特定的目标设置包含目录。这样做的...
CMake的INCLUDE_DIRECTORIES官方解释如下: include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...]) 添加编译器用于查找头文件的文件夹,如果文件夹路径是相对路径,则认为该路径是基于当前源文件的路径。 默认情况下,路径是被追加到已存在的文件路径列表中。使用AFTER和BEFORE可以追加或者插入。
#include"test1.h"#include"test2.h"intmain(intargc,char**argv){test1_print();test2_print();} include_directories/testdir1/CMakeLists.txt内容如下: message("---") message("---Enter directory: ${CMAKE_CURRENT_SOURCE_DIR}") include_directories(testdir1_subdir) # 获取当前文件的INCLUDE_D...
include_directories可以全局影响所有目标,也可以为特定目标指定。aux_source_directory仅用于创建一个源文件列表变量。include_directories直接影响编译器的行为,因为它决定了编译器查找头文件的位置。aux_source_directory不直接影响编译器,它只是帮助组织源文件。在实际项目中,这两个命令经常结合使用,以提高...
include_directories (../include) add_executable (main ${SRC_LIST}) set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) 这里的set其实是和前面的一样,只是EXECUTABLE_OUTPUT_PATH是个系统自带的预定义变量,其意义如下: EXECUTABLE_OUTPUT_PATH :目标二进制可执行文件的存放位置 ...