各级子目录中无需使用target_include_directories()或者include_directories()了。如果此时查看详细的编译过程(make VERBOSE=1)就会发现编译过程是一大坨,很不舒服。 当然了,在最终子目录的 CMakeLists.txt 文件中,使用include_directories()和target_include_directories()的效果是相同的。 4. 目录划分 每一个目录都...
target_include_directories中PRIVATE的PUBLIC区别 private protected public 区别,第一:private,public,protected访问标号的访问范围。private:只能由1.该类中的函数、2.其友元函数访问。不能被任何其他访问,该类的对象也不能访问。protected:可以被1.该类中的函数、2
include_directories会对当前CMakeLists.txt文件的目标文件生效,并会通过add_subdirectory调用传递到子目录;target_include_directories则针对指定的目标文件生效。 target_include_directories对于指定目标添加的目录,有三种范围可选,PUBLIC、PRIVATE和INTERFACE。INTERFACE和PUBLIC会添加到<target>的INTERFACE_INCLUDE_DIRECTORIES属...
当然了,在最终子目录的CMakeLists.txt 文件中,使用 include_directories() 和target_include_directories() 的效果是相同的。 4. 目录划分 每一个目录都是一个模块,目录内部应将对外和对内的头文件进行区分,由模块的调用者决定模块是否被传递(PRIVATE,INTERFACE,PUBLIC)。 5. 参考: cmake.org/pipermail/cma sch...
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(hello-world INTERFACE hello) 1. 2. PUBLIC:公开的。PUBLIC = PRIVATE + INTERFACE。生成 libhello-world.so 时,在 hello_world.c 和 hello_world.h 中都包含了 hello.h。并且 main.c 中也需要使用 libhello.so 提供的功能。那么在 hello-world/CMakeLists.txt 中应该写入: ...
和link_directories的主要差别是: link_directories会对当前CMakeLists.txt文件的目标文件生效,并会通过add_subdirectory调用传递到子目录;target_link_directories则针对指定的目标文件生效。 target_link_directories对于指定目标添加的目录,INTERFACE和PUBLIC会添加到<target>的INTERFACE_INCLUDE_DIRECTORIES属性,PUBLIC和PRIVATE...
这些关键字用于告诉何时需要传递给目标的包含目录列表。when表示是否需要这些包含目录:
target_include_directories(target_name SYSTEM 代码语言:txt 复制 <INTERFACE|PUBLIC|PRIVATE> [items1...] 代码语言:txt 复制 [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...]) 代码语言:txt 复制 target_name:目标的名称。 SYSTEM:可选参数,用于指定这些头文件路径是否被视为系统路径。如果指定了SYSTEM参...
最近看了很多项目的代码,代码是用cmake编译的,由于各种库之间链接关系错综复杂,加上PRIVATE,PUBLIC,...