当指定了该参数,则子目录下的目标不会被父目录下的目标文件包含进去,父目录的CMakeLists.txt不会构建子目录的目标文件,必须在子目录下显式去构建。例外情况:当父目录的目标依赖于子目录的目标,则子目录的目标仍然会被构建出来以满足依赖关系(例如使用了target_link_libraries)。 一、案例一 目录结构及说明如下: ...
include_directories(${PROJECT_SOURCE_DIR}/include) # 这里将子目录条件到工程,并指定编译的输出产物,默认输出产物保存到build/src文件夹下, # 如果不指定可行文件保存路径同样也会保存到该路径下 add_subdirectory(src) # 上面定义了将src子目录加入工程,并指定编译输出(包含编译中间结果)路径为 # bin目录。如果...
include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...]) 该命令主要是将目录添加到编译器的头文件的搜索目录之下,具体介绍见这里。执行该命令后,会将指定的目录添加到当前CMakeLists.txt文件的INCLUDE_DIRECTORIES目录属性和INCLUDE_DIRECTORIES目标文件属性中。接下来看一个实例,看include_directories添加目录...
include_directories 会为当前CMakeLists.txt的所有目标,以及之后添加的所有子目录的目标添加头文件搜索路径。因此,慎用target_include_directories,因为会影响全局target。 target_include_directories 只会为指定目标包含头文件搜索路径。如果想为不同目标设置不同的搜索路径,那么用target_include_directories更合适。 参考 h...
默认情况下,include_directories命令会将目录添加到列表最后,可以通过命令设置CMAKE_INCLUDE_DIRECTORIES_BEFORE变量为ON来改变它默认行为,将目录添加到列表前面。也可以在每次调用include_directories命令时使用AFTER或BEFORE选项来指定是添加到列表的前面或者后面。如果使用SYSTEM选项,会把指定目录当成系统的搜索目录。该命令作...
include_directories会对当前CMakeLists.txt文件的目标文件生效,并会通过add_subdirectory调用传递到子目录;target_include_directories则针对指定的目标文件生效。 target_include_directories对于指定目标添加的目录,有三种范围可选,PUBLIC、PRIVATE和INTERFACE。INTERFACE和PUBLIC会添加到<target>的INTERFACE_INCLUDE_DIRECTORIES属...
aux_source_directory: 自动收集指定目录下的源文件。 当你需要为编译器指定额外的头文件搜索路径时,使用include_directories。 当你想要自动获取一个目录下所有的源文件,而不需要手动列出它们时,使用aux_source_directory。 include_directories可以全局影响所有目标,也可以为特定目标指定。
在CMake中,我们可以为目标文件(编译的二进制文件、或者动态库和静态库)指定头文件目录,如下: include_directories(${CMAKE_SOURCE_DIR}/../lib) 上面CMAKE_SOURCE_DIR变量我们在上面讲变量的时候有提到过,可以理解为CMakeLists.txt所在的目录,当然这个变量也是可以通过set命令设置的。
包含隐藏文件,不包含子目录下的文件 > find /etc -maxdepth 1 -type f | wc -l 统计目录中的 ...
1target_include_directories(tutorial PUBLIC"${CMAKE_BINARY_DIR}") 使用PUBLIC 修饰符意味着目标 tutorial 需要使用该包含目录,并且任何依赖于 tutorial 的其他目标也会继承这个包含目录。 INTERFACE 可见性 1target_include_directories(tutorial INTERFACE"${CMAKE_BINARY_DIR}") ...