CMake 学习之导入库

830 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第27天,点击查看活动详情

导入库

格式

add_library(<name> <type> IMPORTED [GLOBAL])

创建一个名为 <name>导入的库目标。不生成任何规则来构建它,IMPORTED 目标属性为True。目标名称的作用域位于创建它的目录及其下方,但GLOBAL 选项扩展了可见性。它可以像项目中构建的任何目标一样被引用。 IMPORTED 库对于从target_link_libraries()这样的命令中方便地引用非常有用的。通过设置名称以 IMPORTED_ 和 INTERFACE_ 开头的属性来指定导入库的详细信息。

<type> 必须是下面的一种:

STATICSHAREDMODULEUNKNOWN

  • 引用位于项目外部的库文件。IMPORTED_LOCATION的目标属性(或其每个配置变形 importted_location_ )都指定主库文件在磁盘上的位置:

    • 对于大多数非 windows 平台上的 SHARED 库,主要的库文件是链接器和动态加载器都使用的 .so 或 .dylib 文件。如果引用的库文件具有 SONAME (或者在 macOS 上具有以 @rpath/开头的 LC_ID_DYLIB),则该字段的值应该在 importted_soname 目标属性中设置。如果引用的库文件没有 SONAME,但是平台支持它,那么应该设置IMPORTED_NO_SONAME 目标属性。
    • 对于 Windows 上的 SHARED 库,importted_implib 目标属性(或其每个配置变量importted_implib_ )指定 DLL 导入库文件(.dll 或 .dll.a)在磁盘上的位置。importted_location是运行时库的位置(是可选的,但是target_runtime_dll生成器表达式需要)。