CMake 中的 INTERFACE IMPORTED 库是什么?它的用途是什么?

Jef*_*f L 5 cmake cmake-language

到目前为止,我已经看到INTERFACE用于描述仅标头库的库类型,因为它不编译源代码并且不生成库工件。我见过的库类型IMPORTED较少,但从我读到的内容来看,它用于描述已经在磁盘上的预编译库。

我最近看到一些带有IMPORTED INTERFACE库类型的代码,并且对为什么使用它感到困惑。这种类型有哪些属性,这种类型的一些典型用例是什么?

Ale*_*ing 4

它指的是一个仅包含头文件的库,其源代码您无法控制,或者可以在系统中的另一个构建树中找到。最常见的是在 Find 模块或 CMake 包配置模块中创建。

与其他导入目标一样,并且与非导入目标不同,如果它传递地出现在 ed 目标的属性中,则不必(实际上不能)对其进行-ed 处理;相反,生成的包将需要该包。install()INTERFACE_LINK_LIBRARIESinstall()find_dependency