那么在 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会添加到<target>的INTERFACE_INCLUDE_DIRECTORIES属性,PUBLIC和PRIVATE会添加到<target>的INCLUDE_DIRECTORIES属性中。 参数选项 AFTER或BEFORE 指定添加的目录是追加到头文件搜索目录列表,还是在头文件搜索目录列表的最前面插入。 SYSTEM 该选项表明被添加的目录是系统目录,系统目录的搜索顺序在普通的头文件...
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。这会将依赖项的包含...
<INTERFACE|PUBLIC|PRIVATE> [items1...] [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...]) 其中,`target` 是目标名称,可以是库或可执行文件的名称。 `SYSTEM` 表示这些头文件是系统头文件,`BEFORE` 表示这些路径将被添加到其他路径之前。`INTERFACE`、`PUBLIC` 和 `PRIVATE` 是指定这些路径的可见性。它们...
target_include_directories target_include_directories target_include_directories(<target> [SYSTEM] [BEFORE]<INTERFACE|PUBLIC|PRIVATE> [items1...][<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])指定编译给定⽬标时要使⽤的包含⽬录或⽬标。切⽬标必须由 or 创建 ...
如果某个路径只是特定于某个目标,或者您想要更好地控制路径的可见性,则需要后者。 target_include_directories()支持 PRIVATE , PUBLIC 和 INTERFACE 限定符。 它相当于g++命令的-L选项的作用,也相当于环境变量中增加LD_LIBRARY_PATH的路径的作用 link_directories / target_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_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...
CMake语法指定了许多变量,可用于帮助您在项目或源代码树中找到有用的目录。其中一些包括:...
从乌镇互联网大会,到阿尔法狗(AlphaGo)击败职业围棋手柯洁,紧接着李彦宏坐着无人驾驶汽车驶入五环,...