当然了,在最终子目录的 CMakeLists.txt 文件中,使用include_directories()和target_include_directories()的效果是相同的。 4. 目录划分 每一个目录都是一个模块,目录内部应将对外和对内的头文件进行区分,由模块的调用者决定模块是否被传递(PRIVATE,INTERFACE,PUBLIC)。 5. 参考: https://cmake.org/pipermail/c...
target_include_directories 为指定目标(target)添加搜索路径,指定目标是指通过如add_executable(),add_library()这样的命令生成的,并且决不能是alias target(引用目标,别名目标)。 语法格式: target_include_directories(<target> [SYSTEM] [AFTER|BEFORE] <INTERFACE|PUBLIC|PRIVATE> [items1...] [<INTERFACE|PUBLI...
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_link_libraries():指定目标链接的库。官方文档 target_compile_options():指定目标的编译选项。官方文档 目标由add_library()或add_executable()生成。 这三个指令类似,这里以target_include_directories()为例进行讲解。 2. 指令讲解 测试工程...
include_directories会对当前CMakeLists.txt文件的目标文件生效,并会通过add_subdirectory调用传递到子目录;target_include_directories则针对指定的目标文件生效。 target_include_directories对于指定目标添加的目录,有三种范围可选,PUBLIC、PRIVATE和INTERFACE。INTERFACE和PUBLIC会添加到<target>的INTERFACE_INCLUDE_DIRECTORIES属...
允许在IMPORTED targets上指定INTERFACE项。 重复调用相同的<target>会按调用顺序追加项。 如果指定了SYSTEM,编译器将被告知该目录在某些平台上是系统包含目录(system include directories)。这可能会产生诸如抑制警告或跳过依赖计算中包含的头等影响。此外,无论指定的顺序如何,系统包含目录都在正常(normal)包含目录之后进行...
在CMake中,当我们定义一个库或可执行文件,并希望它依赖于其他库或目标时,我们可以使用target_link_libraries或target_sources等命令来建立这种依赖关系。但除了这些基本命令,CMake还提供了三个关键字:PUBLIC, PRIVATE, 和 INTERFACE,用于更细致地控制这些依赖关系的作用域和可见性。 PUBLIC 当我们将一个目标A链接到另...
target_include_directories(<target> [SYSTEM] [AFTER|BEFORE] <INTERFACE|PUBLIC|PRIVATE> [items1...] [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...]) 1. 2. 3. 指定编译给定目标时要使用的include目录。名为< target >的必须由add_executable()或add_library()等命令创建的,并且不能是ALIAS目标。
和link_directories的主要差别是: link_directories会对当前CMakeLists.txt文件的目标文件生效,并会通过add_subdirectory调用传递到子目录;target_link_directories则针对指定的目标文件生效。 target_link_directories对于指定目标添加的目录,INTERFACE和PUBLIC会添加到<target>的INTERFACE_INCLUDE_DIRECTORIES属性,PUBLIC和PRIVATE...
target_include_directories(lib PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:include> PRIVATE src) 我正在构建一个库项目,由于我使用标准路径( lib/用于静态库, include/用于公共标头),我希望通过设置 CMAKE_INSTALL_PREFIX并使用简单的 来摆脱困境install() 打电话,如...