其实private/public 解决的是指示问题,本质上可以使用public 来解决, 可以减少坑。 下面是target_link_libraries中的解释,不想看英文的,直接拉到最后。 Link Inheritance Similarly, for anytarget, in the linking stage, we would need to decide, given theitemto be linked, whether we have to put theitemi...
target_include_directories(<target> [SYSTEM] [AFTER|BEFORE] <INTERFACE|PUBLIC|PRIVATE> [items1...] [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...]) 1. 2. 3. 指定在编译给定target时要使用的包含目录。命名的<target>必须由诸如add_executable或add_library之类的命令创建,并且不能为ALIAS target。 ...
如果目标的头文件中包含了依赖的头文件(源文件间接包含),那么这里就是PUBLIC 如果目标仅源文件中包含了依赖的头文件,那么这里就是PRIVATE 如果目标的头文件包含依赖,但源文件未包含,那么这里就是INTERFACE https://cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html#transitive-usage-requirements...
[<PRIVATE|PUBLIC|INTERFACE> <item>...]...) # Libraries for a Target and/or its Dependents target_link_libraries(<target> <item>...) # Libraries for both a Target and its Dependents target_link_libraries(<target> <LINK_PRIVATE|LINK_PUBLIC> <lib>... [<LINK_PRIVATE|LINK_PUBLIC> <lib...
target_link_libraries(bar PUBLIC foo)链接为public,main函数正常调用foo(),bar中正常调用foo(),库foo链接给bar,同时foo也被传给了main。 target_link_libraries(bar PRIVATE foo)编译,发现main.cpp: undefined reference to `foo()',main.cpp这个编译单元找不到foo()这个符号,库foo链接到bar就被终结了,bar自...
target_name是要链接库的目标的名称,例如一个可执行文件或一个库。PRIVATE,PUBLIC和INTERFACE是可选的...
原文: CMake target_link_libraries Interface Dependencies http://stackoverflow.com/questions/26037954/cmake-target-link-libraries-interface-dependencies If you are creating a shared library ...
target_link_libraries是 CMake 构建过程中一个非常重要的命令。通过它,我们可以指定目标所依赖的库、包括系统库、自定义库以及外部库等。同时,在链接库的过程中可以通过PRIVATE、PUBLIC和INTERFACE等修饰符来控制库的可见性和传递行为。 以上就是cmake target_link_libraries用法的一些解释和示例。希望这篇文章能对你...
target_link_libraries(HelloWorld PRIVATE fmt::fmt):指定HelloWorld可执行文件应链接到fmt库。PRIVATE关键字表明fmt仅在生成HelloWorld时需要,不应传播到其他依赖项目。 创建包含以下内容的helloworld.cpp文件: C++复制 #include<fmt/core.h>intmain(){ fmt::print("Hello World!\n");return0; } ...
target_link_libraries(<target> <PRIVATE|PUBLIC|INTERFACE> <item>... [<PRIVATE|PUBLIC|INTERFACE> <item>...]...) ,PUBLIC和关键字可用于在一个命令中指定链接依赖项和链接接口PRIVATE。INTERFACE下面的库和目标PUBLIC链接到链接接口,并成为链接接口的一部分。下面的库和目标PRIVATE 链接到链接接口,但不是链接...