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_include_directories()或者include_directories()了。如果此时查看详细的编译过程(make VERBOSE=1)就会发现编译过程是一大坨,很不舒服。 当然了,在最终子目录的 CMakeLists.txt 文件中,使用include_directories()和target_include_directories()的效果是相同的。 4. 目录划分 每一个目录都...
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。这会将依赖项的包含...
include_directories会对当前CMakeLists.txt文件的目标文件生效,并会通过add_subdirectory调用传递到子目录;target_include_directories则针对指定的目标文件生效。 target_include_directories对于指定目标添加的目录,有三种范围可选,PUBLIC、PRIVATE和INTERFACE。INTERFACE和PUBLIC会添加到<target>的INTERFACE_INCLUDE_DIRECTORIES属...
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,并且libB的公共符号是可见的,因此main程序...
target_include_directories()的影响范围可以自定义。如加关键子PRIVATE或这PUBLIC。 一般引用库路径使用这个命令,作为外部依赖项引入进来,target是自己项目生成的lib。 如: project(myLib) target_include_directories(myLib PRIVATE ${OpenCV_Include_dir})
target_include_directories(mylib PUBLIC ${PROJECT_SOURCE_DIR}/include) 在这里: 使用set(LIB_SOURCES ...)设置变量 LIB_SOURCES,将libs/目录下的源文件名赋值给它。 使用add_library创建了一个静态库mylib。 使用target_include_directories设置库的头文件路径,指向根目录下的include/目录,通过 PUBLIC 关键字,...
和link_directories的主要差别是: link_directories会对当前CMakeLists.txt文件的目标文件生效,并会通过add_subdirectory调用传递到子目录;target_link_directories则针对指定的目标文件生效。 target_link_directories对于指定目标添加的目录,INTERFACE和PUBLIC会添加到<target>的INTERFACE_INCLUDE_DIRECTORIES属性,PUBLIC和PRIVATE...
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语法特性。