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....
target_include_directories(<target> [SYSTEM] [AFTER|BEFORE] <INTERFACE|PUBLIC|PRIVATE> [items1...] [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...]) AFTER或BEFORE 可以选择让添加的路径位于搜索列表的开头或结尾。缺省时,默认是AFTER。 INTERFACE,PUBLIC,PRIVATE 指定接下来的参数item(即路径)的作用域: ...
include_directories会对当前CMakeLists.txt文件的目标文件生效,并会通过add_subdirectory调用传递到子目录;target_include_directories则针对指定的目标文件生效。 target_include_directories对于指定目标添加的目录,有三种范围可选,PUBLIC、PRIVATE和INTERFACE。INTERFACE和PUBLIC会添加到<target>的INTERFACE_INCLUDE_DIRECTORIES属...
<INTERFACE|PUBLIC|PRIVATE>:用于指定这些路径的可见性。INTERFACE表示这些路径将被导出给依赖于当前目标的其他目标,PUBLIC表示这些路径将被导出给当前目标和依赖于当前目标的其他目标,PRIVATE表示这些路径仅在当前目标中可见。 items:要添加的头文件路径。 例如,假设我们有一个名为myapp的可执行文件目标,并且需要包含...
则需要后一个。后一个是因为target_include_directories()支持PRIVATE,PUBLIC和INTERFACE限定符。
则需要后一个。后一个是因为target_include_directories()支持PRIVATE,PUBLIC和INTERFACE限定符。
这些关键字用于告诉何时需要传递给目标的包含目录列表。when表示是否需要这些包含目录:
The latter comes from the fact that target_include_directories() supports the PRIVATE , PUBLIC , and INTERFACE qualifiers. 原文由 Angew is no longer proud of SO 发布,翻译遵循 CC BY-SA 3.0 许可协议 有用 回复 查看全部 1 个回答 推荐问题...
如果某个路径只是特定于某个目标,或者您想要更好地控制路径的可见性,则需要后者。 target_include_directories()支持 PRIVATE , PUBLIC 和 INTERFACE 限定符。 它相当于g++命令的-L选项的作用,也相当于环境变量中增加LD_LIBRARY_PATH的路径的作用 link_directories / target_link_libraries ...