其实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...
所以,使用PRIVATE PUBLIC和INTERFACE就能控制是否将当前搜索路径传递给下一个目标。 PRIVATE就是不把当前的INCLUDE_DIRECTORIES 传递给INTERFACE_INCLUDE_DIRECTORIES 。 PUBLIC就是把当前的INCLUDE_DIRECTORIES 传递给INTERFACE_INCLUDE_DIRECTORIES 。 INTERFACE就是自己不使用当前的INCLUDE_DIRECTORIES ,但是把当前的INCLUDE_DIRECT...
CMake target_link_libraries Interface Dependencies - Stack Overflow CMake的链接选项:PRIVATE,INTERFACE,PUBLIC - 知乎 If you are creating a shared library and your source cpp files #include the headers of another library (Say, QtNetwork for example), but your header files don't include QtNetwork...
PUBLIC 在public后面的库会被Link到你的target中,并且里面的符号也会被导出,提供给第三方使用。 PRIVATE 在private后面的库仅被link到你的target中,并且终结掉,第三方不能感知你调了啥库 INTERFACE 在interface后面引入的库不会被链接到你的target中,只会导出符号。 --- 更新--- target_link_libraries 会在目标...
target_link_libraries(bar PRIVATE foo)编译,发现main.cpp: undefined reference to `foo()',main.cpp这个编译单元找不到foo()这个符号,库foo链接到bar就被终结了,bar自己能使用foo中的函数,但是外部链接bar的main不能使用foo的函数。 target_link_libraries(bar INTERFACE foo)编译发现bar.cpp: undefined referenc...
Other build properties of PUBLIC and INTERFACE dependencies are propagated to consuming libraries.http://www.cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html#transitive-usage-requirements
[<PRIVATE|PUBLIC|INTERFACE> <item>...]... ) 参数解释: <target>:目标目标的名称。 <PRIVATE|PUBLIC|INTERFACE>:可选的关键词,用来指定链接库的范围,分别表示私有的、公开的或接口的链接库。默认为 PUBLIC。 <item>:要链接的库的名称。 这个命令的作用是将指定的库链接到目标目标中。可以使用多个 target_...
target_name是要链接库的目标的名称,例如一个可执行文件或一个库。PRIVATE,PUBLIC和INTERFACE是可选的...
在这个例子中,my_private_library是私有的,仅my_target可见;而my_interface_library是接口的,对my_target及其依赖者都可见。 希望这些信息能帮助你更好地理解和使用target_link_libraries命令。如果你有进一步的问题或需要更详细的示例,请随时告诉我!
如果目标的头文件中包含了依赖的头文件(源文件间接包含),那么这里就是PUBLIC 如果目标仅源文件中包含了依赖的头文件,那么这里就是PRIVATE 如果目标的头文件包含依赖,但源文件未包含,那么这里就是INTERFACE https://cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html#transitive-usage-requirements...