目录

CMake笔记:install(TARGETS target,...)无法安装的Debug/lib下

1. 问题描述

按如下CMake代码,无法将lib文件安装到Debug/lib或Release/lib目录下,始终安装在CMAKE_INSTALL_PREFIX/lib下。

bash 复制代码
install(TARGETS target
        CONFIGURATIONS Debug
        LIBRARY DESTINATION Debug/lib)
install(TARGETS target
        CONFIGURATIONS Release
        LIBRARY DESTINATION Release/lib)

2. 原因

开始以为是CMake的bug,换了低版本的CMake 3.12.4,运行有错误提示,高版本反而没这个提示。

问了下文心一言,回答如下:

  • ARCHIVE(静态库) : 静态库是一种包含函数和变量的库文件,在链接阶段被复制到最终的可执行文件中。 在CMake中,静态库通常通过add_library命令创建,并指定库的类型为STATIC。
    静态库文件通常具有.a(在Unix-like系统上)或.lib(在Windows上)扩展名。
    静态库在编译时被完整地嵌入到最终的应用程序中,因此最终的应用程序通常较大,但运行时不需要额外的库文件。
  • LIBRARY(动态库或共享库) : 动态库或共享库是一种包含函数和变量的库文件,与静态库不同,它们在运行时被链接到最终的可执行文件中。 在CMake中,动态库也通过add_library命令创建,但库的类型被指定为SHARED。
    动态库文件通常具有.so(在Unix-like系统上)或.dll(在Windows上)扩展名。
    动态库在编译时不会被完整地嵌入到最终的应用程序中,而是作为独立的文件存在。运行时,应用程序需要动态地加载这些库文件。
  • RUNTIME(可执行文件) : 可执行文件是由源代码编译而成的、可以直接运行的程序。 在CMake中,可执行文件通过add_executable命令创建。
    可执行文件通常具有与平台相关的扩展名,如.exe(在Windows上)或无扩展名(在Unix-like系统上)。
    可执行文件包含了程序的所有代码和数据,可以直接在目标平台上运行。

我编译的正是静态库,所以要使用ARCHIVE, 不能用LIBRARY

3. 解决方案

关键字由LIBRARY改为ARCHIVE即可。

bash 复制代码
install(TARGETS ${PROJECT_NAME} CONFIGURATIONS Debug ARCHIVE DESTINATION Debug/lib )
install(TARGETS ${PROJECT_NAME} CONFIGURATIONS Release ARCHIVE DESTINATION Release/lib )
本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
信必诺2 天前
CMake —— 2、cmake在windows与linux下动态链接库编译与链接实例(附:过程代码与CMakeLists.txt)
windows·ubuntu·cmake·动态链接库·linux\
SecPulse9 天前
Linux安装Cmake (Centos 7.9)
linux·运维·centos·cmake·流影
左直拳18 天前
C++程序从windows移植到linux后cmake脚本CMakeLists.txt的修改
linux·c++·windows·cmake·cmakelists·移植到linux
JuicyActiveGilbert19 天前
【CMake指南】第10篇:复杂项目重构与优化指南(实战)
c++·重构·教程·cmake
JuicyActiveGilbert24 天前
【CMake指南】第3篇:编写可维护的构建脚本(变量与作用域管理)
开发语言·c++·教程·cmake
心态与习惯1 个月前
c++ 调用 gurobi 库,cmake,mac
c++·macos·cmake·第三方库·gurobi
辰尘_星启1 个月前
【vscode】一键编译运行c/c++程序
c语言·c++·vscode·debug·cmake
Cony_141 个月前
Windows系统中在VSCode上配置CUDA环境
windows·vscode·cmake·cuda
程序员爱德华1 个月前
cmake、CMakeLists.txt、make、ninja
make·cmake·ninja
SummerGao.2 个月前
Windows 快速搭建C++开发环境,安装C++、CMake、QT、Visual Studio、Setup Factory
c++·windows·qt·cmake·visual studio·setup factory