当前位置: 首页 > news >正文

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

1. 问题描述

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

install(TARGETS targetCONFIGURATIONS DebugLIBRARY DESTINATION Debug/lib)
install(TARGETS targetCONFIGURATIONS ReleaseLIBRARY 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即可。

install(TARGETS ${PROJECT_NAME} CONFIGURATIONS Debug ARCHIVE DESTINATION Debug/lib )
install(TARGETS ${PROJECT_NAME} CONFIGURATIONS Release ARCHIVE DESTINATION Release/lib )
http://www.lryc.cn/news/490219.html

相关文章:

  • 使用ENSP实现NAT
  • 漫步北京小程序构建智慧出行,打造旅游新业态模式
  • 对齐输出
  • Wekan看板安装部署与使用介绍
  • VisionPro 机器视觉案例 之 黑色齿轮
  • 学习python的第十三天之数据类型——函数传参中的传值和传址问题
  • Windows11深度学习环境配置
  • 电销老是被标记,该如何解决!!!
  • MyBatis入门——基本的增删改查
  • 学习Gentoo系统中二进制软件包和源代码包的概念
  • 麦肯锡报告 | 未来的经济引擎:解读下一代竞争领域
  • 连接mysql并读取指定表单数据到DataFrame
  • 从入门到精通数据结构----四大排序(上)
  • 【bug】使用transformers训练二分类任务时,训练损失异常大
  • 文献阅读与笔记整理技巧
  • Python Flask中集成SQLAlchemy和Flask-Login
  • esp32 JTAG 串口 bootload升级
  • 【linux】(17)压缩和解压
  • 摄像机视频分析软件下载LiteAIServer视频智能分析平台玩手机打电话检测算法技术的实现
  • springboot购物推荐网站的设计与实现(代码+数据库+LW)
  • 【Unity3D插件】Unity3D HDRP Outline高亮发光轮廓描边插件教程
  • QT基础 UI编辑器 QT5.12.3环境 C++环境
  • 计算机网络socket编程(5)_TCP网络编程实现echo_server
  • go语言闭包捕获的是变量的引用而不是变量的值
  • 周期法频率计的设计
  • 【Linux】drop cache与reclaim的区别
  • 【Linux课程学习】:命令行参数,环境变量
  • HTB:WifineticTwo[WriteUP]
  • mac安装Pytest、Allure、brew
  • 关于相机选型的一些参数说明