PRIVATE:私有的。生成 libhello-world.so时,只在 hello_world.c 中包含了 hello.h,libhello-world.so对外的头文件——hello_world.h 中不包含 hello.h。而且 main.c 不会调用 hello.c 中的函数,或者说 main.c 不知道 hello.c 的存在,那么在 hello-world/CMakeLists.txt 中应该写入: target_link_librar...
第一:private, public, protected 访问标号的访问范围。 private:只能由1.该类中的函数、2.其友元函数访问。 不能被任何其他访问,该类的对象也不能访问。 protected:可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。 但不能被该类的对象访问。 public:可以被1.该类中的函数、2.子类的函数、3....
include_directories会对当前CMakeLists.txt文件的目标文件生效,并会通过add_subdirectory调用传递到子目录;target_include_directories则针对指定的目标文件生效。 target_include_directories对于指定目标添加的目录,有三种范围可选,PUBLIC、PRIVATE和INTERFACE。INTERFACE和PUBLIC会添加到<target>的INTERFACE_INCLUDE_DIRECTORIES属...
<INTERFACE|PUBLIC|PRIVATE> [items1...] [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...]) 指定编译给定目标时要使用的包含目录。命名的<target>必须是由add_executable()或add_library()等命令创建的,并且不能是ALIAS target。 通过显式使用AFTER或BEFORE,您可以在附加和前置之间进行选择,而与默认值无关。
target_include_directories(<target> [SYSTEM] [AFTER|BEFORE] <INTERFACE|PUBLIC|PRIVATE> [items1...] [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...]) AFTER或BEFORE 可以选择让添加的路径位于搜索列表的开头或结尾。缺省时,默认是AFTER。 INTERFACE,PUBLIC,PRIVATE ...
target_include_directories target_include_directories target_include_directories(<target> [SYSTEM] [BEFORE]<INTERFACE|PUBLIC|PRIVATE> [items1...][<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])指定编译给定⽬标时要使⽤的包含⽬录或⽬标。切⽬标必须由 or 创建 ...
则需要后一个。后一个是因为target_include_directories()支持PRIVATE,PUBLIC和INTERFACE限定符。
最近看了很多项目的代码,代码是用cmake编译的,由于各种库之间链接关系错综复杂,加上PRIVATE,PUBLIC,...
这些关键字用于告诉何时需要传递给目标的包含目录列表。when表示是否需要这些包含目录:
则需要后一个。后一个是因为target_include_directories()支持PRIVATE,PUBLIC和INTERFACE限定符。