标题几乎已经总结了我的问题: 当使用
add_library(SHARED)
创建库时,cmake 会创建两个文件,实际库(.so/.dll)和导入库(.a/.lib)
这本身并不是问题。
但是当我调用
install(TARGETS ${PROJECT_NAME} DESTINATION ${DeploymentFolder})
时,它还会安装两个文件、共享库及其导入。
我只想安装共享库,因为它们仅用作运行时库。它们不应该链接到除部署文件夹中的可执行文件之外的任何内容。
除了使用
FILES
明确指定名称之外,还有什么想法吗?
FWIW,环境是 Windows 上的 Qt 安装。
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})