那么在 hello-world/CMakeLists.txt 中应该写入: target_link_libraries(hello-world INTERFACE hello)target_include_directories(hello-world INTERFACE hello) PUBLIC:公开的。PUBLIC = PRIVATE + INTERFACE。生成 libhello-world.so 时,在 hello_world.c 和 hello_world.h 中都包含了 hello.h。并且 main.c 中...
INTERFACE,PUBLIC,PRIVATE 指定接下来的参数item(即路径)的作用域: INTERFACE target对应的头文件才能使用,会指定target的属性INTERFACE_INCLUDE_DIRECTORIES PUBLIC target对应头文件和源文件都能使用,会指定target的属性INCLUDE_DIRECTORIES 和INTERFACE_INCLUDE_DIRECTORIES PRIVATE target对应源文件使用,会指定target的属性INCLUD...
$ cmake.……--# In child scope,target test property:interface[/home/shengyi/code/gitee_repo/projects/cmake/target_include_directories/test],normal[]# In parent scope,target main property:interface[],normal[]# In parent scope,after add test lib,target main property:interface[],normal[]$ mak...
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。这会将依赖项的包含...
target_include_directories target_include_directories target_include_directories(<target> [SYSTEM] [BEFORE]<INTERFACE|PUBLIC|PRIVATE> [items1...][<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])指定编译给定⽬标时要使⽤的包含⽬录或⽬标。切⽬标必须由 or 创建 ...
从乌镇互联网大会,到阿尔法狗(AlphaGo)击败职业围棋手柯洁,紧接着李彦宏坐着无人驾驶汽车驶入五环,...
而[item]表示库文件没有后缀的名字。默认情况下,库依赖项是传递的。当这个目标链接到另一个目标时,链接到这个目标的库也会出现在另一个目标的连接线上。这个传递的接口存储在interface_link_libraries的目标属性中,可以通过设置该属性直接重写传递接口。 例子如下:...
The latter comes from the fact that target_include_directories() supports the PRIVATE , PUBLIC , and INTERFACE qualifiers. 原文由 Angew is no longer proud of SO 发布,翻译遵循 CC BY-SA 3.0 许可协议 有用 回复 查看全部 1 个回答 推荐问题...
好消息是在最新的cmake 3.11版本中,这个问题被正式解决了,参见CMake 3.11 Release Notes 就是说在3.11后续的版本中target_*系列command可以对imported target设置INTERFACE_*系列属性了。target_include_directories(MyLib INTERFACE mylib/include)这样的写法就不会报错了。
cmake_minimum_required ( VERSION 3.20 ) project ( testprj ) set ( PRJ_INCLUDE_DIRS ) set ( PRJ_COMPILE_FEATURES ) set ( PRJ_LIBRARIES ) list ( APPEND PRJ_COMPILE_FEATURES cxx_std_20 ) add_executable ( ${PROJECT_NAME} main.cpp ) list ( APPEND PRJ_INCLUDE_DIRS sub1 ) list ( APPE...