因为main.c里include了testFunc.h和testFunc1.h,如果没有这个命令来指定头文件所在位置,就会无法编译。当然,也可以在main.c里使用include来指定路径. 2.add_subdirectory()这个命令可以向当前工程添加存放源文件的子目录,并可以指定中间二进制和目标二进制的存放位置.add_subdirectory (src),这里指定src目录下存放了...
include_directories()的影响范围最大,可以为CMakelists.txt后的所有项目添加头文件目录 一般写在最外层CMakelists.txt中影响全局 target_include_directories target_include_directories()的影响范围可以自定义。如加关键子PRIVATE或这PUBLIC。 一般引用库路径使用这个命令,作为外部依赖项引入进来,target是自己项目生成的li...
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(header-dir)是一个全局包含,向下传递。什么意思呢?就是说如果某个目录的 CMakeLists.txt 中使用了该指令,其下所有的子目录默认也包含了header-dir目录。 上述例子中,如果在顶层的 cmake-test/CMakeLists.txt 中加入: include_directories(hello-world)include_directories(hello-world/hello)incl...
(2)只收集指定目录下的源文件,不包括子目录。 可以用于简化源文件的指定过程。 aux_source_directory(src MY_SOURCES) add_executable(my_executable ${MY_SOURCES}) 3. 区别 include_directories: 指定头文件搜索路径。 aux_source_directory: 自动收集指定目录下的源文件。
include_directories会对当前CMakeLists.txt文件的目标文件生效,并会通过add_subdirectory调用传递到子目录;target_include_directories则针对指定的目标文件生效。 target_include_directories对于指定目标添加的目录,有三种范围可选,PUBLIC、PRIVATE和INTERFACE。INTERFACE和PUBLIC会添加到<target>的INTERFACE_INCLUDE_DIRECTORIES属...
include_directories命令将指定的目录添加到编译器用于搜索头文件的路径中。这对于组织较大的项目非常有用...
CMake的作用域是指命令影响的范围。例如,include_directories命令在被调用的CMakeLists.txt文件及其子目录中有效。如果在项目的根目录使用include_directories,那么这个路径会应用于整个项目。然而,如果在子目录中的CMakeLists.txt文件使用,它只影响该目录及其子目录。
在主项目的"CMakeLists.txt"文件中,使用target_include_directories()函数将子目录的头文件路径添加到主项目中。 这将使主项目能够访问子目录的头文件。 至于CMake的分类、优势和应用场景,CMake是一种构建工具,广泛应用于各种编程语言的项目中,包括但不限于C++、C、Python等。它的主要优势包括: 跨平台:CMake可以...