PUBLIC:公开的。PUBLIC = PRIVATE + INTERFACE。生成 libhello-world.so 时,在 hello_world.c 和 hello_world.h 中都包含了 hello.h。并且 main.c 中也需要使用 libhello.so 提供的功能。那么在 hello-world/CMakeLists.txt 中应该写入: target_link_libraries(hello-world PUBLIC hello)target_include_direc...
private 属性不能够被继承。 使用private继承,父类的protected和public属性在子类中变为private; 使用protected继承,父类的protected和public属性在子类中变为protected; 使用public继承,父类中的protected和public属性不发生改变; 1. 2. 3. 如下所示: public: protected: private: public继承 public protected 不可用 ...
<INTERFACE|PUBLIC|PRIVATE> [items1...] [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...]) 该命令给指定的目标文件添加头文件搜索目录,所以<target>必须用add_executable()或add_library()等命令先创建出来,和include_directories的主要差别是: include_directories会对当前CMakeLists.txt文件的目标文件生效,并会...
INTERFACE,PUBLIC,PRIVATE 指定接下来的参数item(即路径)的作用域: INTERFACE target对应的头文件才能使用,会指定target的属性INTERFACE_INCLUDE_DIRECTORIES PUBLIC target对应头文件和源文件都能使用,会指定target的属性INCLUDE_DIRECTORIES 和INTERFACE_INCLUDE_DIRECTORIES PRIVATE target对应源文件使用,会指定target的属性INCLUD...
PUBLIC:PUBLIC = PRIVATE + INTERFACE #将libhello.so动态库文件链接到可执行文件main target_link_libraries(main hello) 1. 2. 2.1.12 aux_source_directory 作用:寻找一个目录下所有的源代码文件并将列表存储在一个变量中,这个指令临时被用来自动构建源文件列表 ...
则需要后一个。后一个是因为target_include_directories()支持PRIVATE,PUBLIC和INTERFACE限定符。
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。这会将依赖项的包含...
1.另一件事是INTERFACE_INCLUDE_DIRECTORIES是一个完全不同于INCLUDE_DIRECTORIES的属性。设置PUBLIC包含目录...
在大部份情况下我们都可以使用 PCA 进行线性降维。从图像处理到非结构化数据,无时无刻不在。我们甚至...
除了Angew 的回答中正确提到的内容外,include_directories和target_include_directories之间另一个非常重要的区别是,当与PUBLIC或INTERFACE一起使用时,后者会填充目标的INTERFACE_INCLUDE_DIRECTORIES属性。当另一个目标使用target_link_libraries链接到原始目标时,此属性非常有用,因为链接目标将自动添加这些包含目录。请参考示例...