当指定了该参数,则子目录下的目标不会被父目录下的目标文件包含进去,父目录的CMakeLists.txt不会构建子目录的目标文件,必须在子目录下显式去构建。例外情况:当父目录的目标依赖于子目录的目标,则子目录的目标仍然会被构建出来以满足依赖关系(例如使用了target_link_libraries)。 一、案例一 目录结构及说明如下: ...
include_directories(${PROJECT_SOURCE_DIR}/include) # 这里将子目录条件到工程,并指定编译的输出产物,默认输出产物保存到build/src文件夹下, # 如果不指定可行文件保存路径同样也会保存到该路径下 add_subdirectory(src) # 上面定义了将src子目录加入工程,并指定编译输出(包含编译中间结果)路径为 # bin目录。如果...
include_directories 会为当前CMakeLists.txt的所有目标,以及之后添加的所有子目录的目标添加头文件搜索路径。因此,慎用target_include_directories,因为会影响全局target。 target_include_directories 只会为指定目标包含头文件搜索路径。如果想为不同目标设置不同的搜索路径,那么用target_include_directories更合适。 参考 h...
include_directories(header-dir)是一个全局包含,向下传递。什么意思呢?就是说如果某个目录的 CMakeLists.txt 中使用了该指令,其下所有的子目录默认也包含了header-dir目录。 上述例子中,如果在顶层的 cmake-test/CMakeLists.txt 中加入: include_directories(hello-world)include_directories(hello-world/hello)incl...
include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...]) 该命令主要是将目录添加到编译器的头文件的搜索目录之下,具体介绍见这里。执行该命令后,会将指定的目录添加到当前CMakeLists.txt文件的INCLUDE_DIRECTORIES目录属性和INCLUDE_DIRECTORIES目标文件属性中。接下来看一个实例,看include_directories添加目录...
include_directories: 指定头文件搜索路径。 aux_source_directory: 自动收集指定目录下的源文件。 当你需要为编译器指定额外的头文件搜索路径时,使用include_directories。 当你想要自动获取一个目录下所有的源文件,而不需要手动列出它们时,使用aux_source_directory。
CMake的INCLUDE_DIRECTORIES官方解释如下: include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...]) 添加编译器用于查找头文件的文件夹,如果文件夹路径是相对路径,则认为该路径是基于当前源文件的路径。 默认情况下,路径是被追加到已存在的文件路径列表中。使用AFTER和BEFORE可以追加或者插入。
在主项目的"CMakeLists.txt"文件中,使用target_include_directories()函数将子目录的头文件路径添加到主项目中。 这将使主项目能够访问子目录的头文件。 至于CMake的分类、优势和应用场景,CMake是一种构建工具,广泛应用于各种编程语言的项目中,包括但不限于C++、C、Python等。它的主要优势包括: ...
CMake的作用域是指命令影响的范围。例如,include_directories命令在被调用的CMakeLists.txt文件及其子目录中有效。如果在项目的根目录使用include_directories,那么这个路径会应用于整个项目。然而,如果在子目录中的CMakeLists.txt文件使用,它只影响该目录及其子目录。
包含隐藏文件,不包含子目录下的文件 > find /etc -maxdepth 1 -type f | wc -l 统计目录中的 ...