安装共享库时阻止 CMake 安装导入库

问题描述 投票:0回答:1

标题几乎已经总结了我的问题: 当使用

add_library(SHARED)
创建库时,cmake 会创建两个文件,实际库(.so/.dll)和导入库(.a/.lib)

这本身并不是问题。

但是当我调用

install(TARGETS ${PROJECT_NAME} DESTINATION ${DeploymentFolder})
时,它还会安装两个文件、共享库及其导入。

我只想安装共享库,因为它们仅用作运行时库。它们不应该链接到除部署文件夹中的可执行文件之外的任何内容。

除了使用

FILES
明确指定名称之外,还有什么想法吗?

FWIW,环境是 Windows 上的 Qt 安装。

cmake
1个回答
1
投票

CMake 支持多种可以安装的种工件。默认情况下,对于 Windows 上的共享库,会选择“运行时”(

.dll
) 和“存档”(
.lib
)(文档)。但您可以明确指定您需要哪些工件:

install(TARGETS ${PROJECT_NAME}
  RUNTIME # Installs only '.dll' part of the library
  DESTINATION ${DeploymentFolder})

如果你想同时支持 Windows 和 Linux,你可以指定 RUNTIME 和 LIBRARY 类型:后者用于安装

.so
:

install(TARGETS ${PROJECT_NAME}
  RUNTIME # Installs only '.dll' part of the shared library on Windows
          # Does nothing for libraries on Linux
    DESTINATION ${DeploymentFolder}
  LIBRARY # Installs shared library on Linux
          # Does nothing for shared libraries on Windows
    DESTINATION ${DeploymentFolder})
© www.soinside.com 2019 - 2024. All rights reserved.