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...
# 定义一个普通库add_library(MyLibrary src/my_library.cpp)# 设置包含目录target_include_directories(MyLibrary PRIVATE${CMAKE_SOURCE_DIR}/src/private_include PUBLIC${CMAKE_SOURCE_DIR}/src/public_include INTERFACE${CMAKE_SOURCE_DIR}/src/interface_include )# 设置编译选项target_compile_options(MyLibr...
target_link_libraries(libB PRIVATE libA) target_include_directories(libB PUBLIC include) add_executable(main main.cpp) target_link_libraries(main PUBLIC libB) 在这个例子中,libB以PRIVATE方式链接到libA,这意味着只有libB可以访问libA中的公共符号,而main程序不能直接访问它们。但是,由于main程序链接到libB...
target_include_directories(<target> [SYSTEM] [AFTER|BEFORE] <INTERFACE|PUBLIC|PRIVATE> [items1...] [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...]) 1. 2. 3. 指定编译给定目标时要使用的include目录。名为< target >的必须由add_executable()或add_library()等命令创建的,并且不能是ALIAS目标。 ...
target_link_libraries(hello-world PUBLIC hello) target_include_directories(hello-world PUBLIC hello) 实际上,这三个关键字指定的是目标文件依赖项的使用范围(scope)或者一种传递(propagate)。官方说明 可执行文件依赖 libhello-world.so, libhello-world.so 依赖 libhello.so 和 libworld.so。 main.c 不使用...
简介:[√]cmake的链接属性PRIVATE、PUBLIC、INTERFACE权限控制 include_directories(${CMAKE_CURRENT_LIST_DIR}) 这种非Target的命令会影响全局的编译器,所以在大型项目里面,推荐使用cmake现代的target api。 举例: target_include_directories(lib1 PRIVATE ${CMAKE_CURRENT_LIST_DIR})target_link_libraries(app PRIVA...
2.1.10 target_include_directories 2.1.11 target_link_libraries 2.1.12 aux_source_directory 2.2 CMake常用变量 2.2.1 编译选项 2.2.2 目录 2.2.3 文件输出路径 3. CMake编译工程 3.1 编译流程 3.2 CMake编译实践 前言 1.介绍CMake语法特性。
target_include_directories(helloworld PUBLIC ${CMAKE_CURRENT_LIST_DIR}/) target_link_libraries(main PUBLIC helloworld) 配置项目后,生成的命令,都有include目录了 再编译项目,成功编译 可以总结下, PUBLIC:不仅自己包含该参数,也会将该参数导出给其它目标使用。
可以看到CPP拥有target_include_directories(CPP PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/includeA和target_link_libraries(CPP A)的属性 理论上来说肯定main.cpp可以调用addA 修改main.cpp #include"interface_b.h"#include"interface_a.h"#include<stdio.h>intmain(){printf("main\n");addA(1,2);addB(1,2)...
<INTERFACE|PUBLIC|PRIVATE> [items1...] [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...]) 该命令给指定的目标文件添加头文件搜索目录,所以<target>必须用add_executable()或add_library()等命令先创建出来,和include_directories的主要差别是: include_directories会对当前CMakeLists.txt文件的目标文件生效,并会...