include_directories会对当前CMakeLists.txt文件的目标文件生效,并会通过add_subdirectory调用传递到子目录;target_include_directories则针对指定的目标文件生效。 target_include_directories对于指定目标添加的目录,有三种范围可选,PUBLIC、PRIVATE和INTERFACE。INTERFACE和PUBLIC会添加到<target>的INTERFACE_INCLUDE_DIRECTORIES属...
target_include_directories()的功能完全可以使用include_directories()实现。但是我还是建议使用target_include_directories()。为什么?保持清晰! include_directories(header-dir)是一个全局包含,向下传递。什么意思呢?就是说如果某个目录的 CMakeLists.txt 中使用了该指令,其下所有的子目录默认也包含了header-dir目录。
`items` 是头文件搜索路径,可以是绝对路径或相对路径。如果是相对路径,会相对于当前 CMakeLists.txt 文件所在的目录进行解析。 用法: function(my_include_public) target_include_directories(${CURRENT_LIBRARY} PUBLIC ${ARGN}) endfunction()function(my_include_private) target_include_directories(${CURRENT_LIB...
问题的根源不是target_include_directories命令本身,而是试图install源路径中带有公共或接口包含目录前缀的目...
问题的根源不是target_include_directories命令本身,而是试图install源路径中带有公共或接口包含目录前缀的...
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(t x/y)具有目标作用域-它将x/y添加到目标t的包含路径中。如果所有的目标...
target_include_directories(t x/y)具有目标作用域-它将x/y添加到目标t的包含路径中。如果所有的目标...
include_directories()的影响范围最大,可以为CMakelists.txt后的所有项目添加头文件目录 一般写在最外层CMakelists.txt中影响全局 target_include_directories target_include_directories()的影响范围可以自定义。如加关键子PRIVATE或这PUBLIC。 一般引用库路径使用这个命令,作为外部依赖项引入进来,target是自己项目生成的li...
target_include_directories(main PUBLIC MathLib) 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 主CMake文件中的add_subdirectory(MathLib)指的就是到MathLib这个目录下去执行执行对应的CMakeList.txt。所以对应介绍工程目录所说的主CMake调用子CMake。执行这个句子之后,就会对应生成...