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...
target_include_directories 为指定目标(target)添加搜索路径,指定目标是指通过如add_executable(),add_library()这样的命令生成的,并且决不能是alias target(引用目标,别名目标)。 语法格式: target_include_directories(<target> [SYSTEM] [AFTER|BEFORE] <INTERFACE|PUBLIC|PRIVATE> [items1...] [<INTERFACE|PUBLI...
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...
include_directories会对当前CMakeLists.txt文件的目标文件生效,并会通过add_subdirectory调用传递到子目录;target_include_directories则针对指定的目标文件生效。 target_include_directories对于指定目标添加的目录,有三种范围可选,PUBLIC、PRIVATE和INTERFACE。INTERFACE和PUBLIC会添加到<target>的INTERFACE_INCLUDE_DIRECTORIES属...
target_include_directories(<target> [SYSTEM] [AFTER|BEFORE] <INTERFACE|PUBLIC|PRIVATE> [items1...] [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...]) 指定编译给定目标时要使用的包含目录。命名的<target>必须是由add_executable()或add_library()等命令创建的,并且不能是ALIAS target。
target_include_directories()的影响范围可以自定义。如加关键子PRIVATE或这PUBLIC。 一般引用库路径使用这个命令,作为外部依赖项引入进来,target是自己项目生成的lib。 如: project(myLib) target_include_directories(myLib PRIVATE ${OpenCV_Include_dir})
target_include_directories(my_lib PUBLIC ${PROJECT_SOURCE_DIR}/include) # PROJECT_SOURCE_DIR是CMake内置的变量,表示工程的根目录路径 1. 2. 3. 4. 5. 6. # 添加一个库 add_library(my_lib STATIC my_source.cpp) # 当前target需要包含的头文件目录 ...
则需要后一个。后一个是因为target_include_directories()支持PRIVATE,PUBLIC和INTERFACE限定符。
注意这里的PUBLIC关键字,这个关键字表示,如果有其它的库或者可执行程序依赖 lib,那么你不用再次声明需要 OpenCV 相关的库了,CMake 会自动将依赖加进去。另外,如果你使用的是 CMake 3.5 版本以下的话,还需要这样做: target_include_directories(lib PUBLIC ${OpenCV_INCLUDE_DIRS}) ...
则需要后一个。后一个是因为target_include_directories()支持PRIVATE,PUBLIC和INTERFACE限定符。