其实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...
而假如A引用了B(或者说目标A依赖于目标B),那么INTERFACE_INCLUDE_DIRECTORIES 中的路径就会赋给目标A的INCLUDE_DIRECTORIES。 所以,使用PRIVATE PUBLIC和INTERFACE就能控制是否将当前搜索路径传递给下一个目标。 PRIVATE就是不把当前的INCLUDE_DIRECTORIES 传递给INTERFACE_INCLUDE_DIRECTORIES 。 PUBLIC就是把当前的INCLUDE_DI...
其实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...
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...
<PRIVATE|PUBLIC|INTERFACE>:可选的关键词,用来指定链接库的范围,分别表示私有的、公开的或接口的链接库。默认为 PUBLIC。 <item>:要链接的库的名称。 这个命令的作用是将指定的库链接到目标目标中。可以使用多个 target_link_libraries 命令来链接多个库。每个命令可以指定不同的范围(PRIVATE、PUBLIC 或 INTERFACE)...
target_name是要链接库的目标的名称,例如一个可执行文件或一个库。PRIVATE,PUBLIC和INTERFACE是可选的...
链接为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自己能使用foo中的函数,但是外部链接bar...
其中,target_name是目标文件的名称,PRIVATE、PUBLIC和INTERFACE是链接属性,用于指定链接库的可见性。library_name1、library_name2等是要链接的库文件的名称。 基于标志的target_link_libraries函数的常见应用场景包括: 链接第三方库:当项目需要使用第三方库时,可以使用target_link_libraries函数将这些库文件链接到目标文件...
target_link_libraries(<target><LINK_PRIVATE|LINK_PUBLIC> <lib>...[<LINK_PRIVATE|LINK_PUBLIC> <lib>...]...) LINK_PUBLIC 和 LINK_PRIVATE 模式可用于在一个命令中指定链接依赖关系和链接接口。 此签名仅用于兼容性。请改用 PUBLIC 或 PRIVATE 关键字。