在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目录。
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。这会将依赖项的包含...
target_include_directories 为指定目标(target)添加搜索路径,指定目标是指通过如add_executable(),add_library()这样的命令生成的,并且决不能是alias target(引用目标,别名目标)。 语法格式: target_include_directories(<target> [SYSTEM] [AFTER|BEFORE] <INTERFACE|PUBLIC|PRIVATE> [items1...] [<INTERFACE|PUBLI...
目录 收起 1,推荐的目录机构 1.1,主文件cmake 1.2,子目录cmake 2,常用环境变量 3,CMake 函数 3.1,option 3.2,设置编译选项 3.3,message 3.4,target_compile_definitions 3.5,add_definitions 3.8,include 3.9,include_directories 3.10,aux_source_directory 3.12,file 添加源文件 3.13,add_library 3.14...
include_directories()的影响范围最大,可以为CMakelists.txt后的所有项目添加头文件目录 一般写在最外层CMakelists.txt中影响全局 target_include_directories target_include_directories()的影响范围可以自定义。如加关键子PRIVATE或这PUBLIC。 一般引用库路径使用这个命令,作为外部依赖项引入进来,target是自己项目生成的li...
2.1.10 target_include_directories 2.1.11 target_link_libraries 2.1.12 aux_source_directory 2.2 CMake常用变量 2.2.1 编译选项 2.2.2 目录 2.2.3 文件输出路径 3. CMake编译工程 3.1 编译流程 3.2 CMake编译实践 前言 1.介绍CMake语法特性。
和link_directories的主要差别是: link_directories会对当前CMakeLists.txt文件的目标文件生效,并会通过add_subdirectory调用传递到子目录;target_link_directories则针对指定的目标文件生效。 target_link_directories对于指定目标添加的目录,INTERFACE和PUBLIC会添加到<target>的INTERFACE_INCLUDE_DIRECTORIES属性,PUBLIC和PRIVATE...
而如果使用上面的 Make 工具,就得为每一种标准写一次 Makefile ,这将是一件让人抓狂的工作。
include_directories(x/y) 影响目录范围。此 CMakeList 中的所有目标,以及在其调用点之后添加的所有子目录中的目标,都会将路径 x/y 添加到它们的包含路径中。 target_include_directories(t x/y) 具有目标范围——它将 x/y 添加到目标 t 的包含路径中。 如果您的所有目标都使用相关的包含目录,则您需要前一...