INTERFACE_LINK_LIBRARIES¶
列出库的公共接口库。
此属性包含传递链接依赖项的列表。当使用 target_link_libraries()
命令将目标链接到另一个目标时,列出的库(及其链接接口库的递归)也将提供给另一个目标。如果策略 CMP0022
为 OLD
或未设置,则此属性将被 LINK_INTERFACE_LIBRARIES
或 LINK_INTERFACE_LIBRARIES_<CONFIG>
属性覆盖。
在构建依赖目标的链接规则时,生成器将使用此属性的值。依赖目标的直接链接依赖项由其 LINK_LIBRARIES
目标属性指定,首先链接这些依赖项,然后按直接依赖项的传递闭包中传递依赖项的 INTERFACE_LINK_LIBRARIES
属性进行间接依赖项链接。请参阅策略 CMP0022
。
INTERFACE_LINK_LIBRARIES
的内容可以使用语法 $<...>
的“生成器表达式”。有关可用表达式,请参阅手册 cmake-generator-expressions(7)
。有关定义构建系统属性的更多信息,请参阅手册 cmake-buildsystem(7)
。
注意
target_link_libraries(<target> ...)
对 <target>
的调用可能会更新此属性。如果 <target>
并不是在与调用相同的目录中创建的,则 target_link_libraries()
会用 ::@(directory-id);...;::@
形式对每个条目进行包装,其中 ::@
是字面意思,而 (directory-id)
未指定。这会告知生成器必须在调用方的范围中查找名为的库,而非在创建 <target>
的范围内。有效的目录 ID 会由 install(EXPORT)
和 export()
命令在导出时被剥离。
INTERFACE_LINK_LIBRARIES
为目标的依赖项添加可传递的链接依赖项。在高级使用案例中,可以通过使用 INTERFACE_LINK_LIBRARIES_DIRECT
和 INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE
目标属性来更新目标的依赖项的直接链接依赖项。
创建可重定位包¶
请注意,不建议使用依赖项的绝对路径填充目标的 INTERFACE_LINK_LIBRARIES
。那样会将安装包中的库文件路径硬编码为在制作此包的机器上找到的依赖项路径。
有关在创建可重新分发包时指定使用要求时必须小心注意的更多事项,请参阅 cmake-packages(7)
手册的 Creating Relocatable Packages 部分。