第一:private, public, protected 访问标号的访问范围。 private:只能由1.该类中的函数、2.其友元函数访问。 不能被任何其他访问,该类的对象也不能访问。 protected:可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。 但不能被该类的对象访问。 public:可以被1.该类中的函数、2.子类的函数、3....
main.c 和 libhello-world.so 都使用 libhello.so 的功能,hello-world/CMakeLists.txt 中使用 PUBLIC 关键字; 3. include_directories(dir) target_include_directories()的功能完全可以使用include_directories()实现。但是我还是建议使用target_include_directories()。为什么?保持清晰! include_directories(header-di...
当然了,在最终子目录的CMakeLists.txt 文件中,使用 include_directories() 和target_include_directories() 的效果是相同的。 4. 目录划分 每一个目录都是一个模块,目录内部应将对外和对内的头文件进行区分,由模块的调用者决定模块是否被传递(PRIVATE,INTERFACE,PUBLIC)。 5. 参考: cmake.org/pipermail/cma sch...
如果目标的头文件中包含了依赖的头文件(源文件间接包含),那么这里就是PUBLIC 如果目标仅源文件中包含了依赖的头文件,那么这里就是PRIVATE 如果目标的头文件包含依赖,但源文件未包含,那么这里就是INTERFACE https://cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html#transitive-usage-requirements...
使用target_include_directories命令来指定目标的头文件搜索路径。该命令的语法如下: 代码语言:txt 复制 target_include_directories(target_name SYSTEM 代码语言:txt 复制 <INTERFACE|PUBLIC|PRIVATE> [items1...] 代码语言:txt 复制 [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...]) 代码语言:txt 复制 targe...
target_include_directories(my_lib PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include/public INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include/interface ) # 链接另一个库,并使用其头文件 target_link_libraries(my_lib PUBLIC other_lib) ...
( APPEND PRJ_INCLUDE_DIRS sub2 ) target_include_directories ( ${PROJECT_NAME} PRIVATE ${PRJ_INCLUDE_DIRS} ) target_link_libraries( ${PROJECT_NAME} PRIVATE ${PRJ_LIBRARIES} ) target_compile_features ( ${PROJECT_NAME} PRIVATE ${PRJ_COMPILE_FEATURES} ) get_target_property(include_dirs ${...
每个命令都有PRIVATE、PUBLIC和INTERFACE模式。PRIVATE模式只填充目标属性的非INTERFACE_变体,INTERFACE模式只...
If your header files but not your source files include the headers of another library, then it is anINTERFACEdependency. Other build properties of PUBLIC and INTERFACE dependencies are propagated to consuming libraries.http://www.cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html#transiti...
target_link_libraries(bar PUBLIC foo) 链接为public,main函数正常调用foo(),bar中正常调用foo(),库foo链接给bar,同时foo也被传给了main。 target_link_libraries(bar PRIVATE foo) 编译,发现main.cpp: undefined reference to `foo()',main.cpp这个编译单元找不到foo()这个符号,库foo链接到bar就被终结了,bar...