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

CMake学习-- install 指令详细说明

目录

  • CMake中`install`命令的用法
    • 背景知识
    • 使用方法
      • 项目结构
      • 示例代码
      • CMakeLists.txt
      • 构建和安装
    • 详细介绍
      • 安装库和头文件
      • 安装可执行文件
      • 安装额外的文件
      • 安装目录结构
      • 使用安装的库
    • 总结

CMake中install命令的用法

背景知识

在软件开发过程中,构建和安装是两个重要的环节。构建是指将源代码编译成可执行文件或库文件,而安装则是将这些文件复制到指定的位置,以便在系统中使用。

从"手工打包"到"智能制造"

在早期的编程实践中,开发者完成代码编译后,常常需要手动将可执行文件、库文件和头文件复制到系统目录。就像中世纪的手工匠人,每次交付产品都要亲自打包,既容易出错又效率低下。想象一下:每次版本更新都要手动复制十几个文件到不同目录,还要考虑Linux、Windows不同系统的路径差异——这简直是开发者的噩梦。

CMake的install命令就像现代工厂的自动化流水线,它能精确地将编译产物分类打包,自动部署到指定位置。这个功能对于:

  • 跨平台软件分发
  • 软件包管理(deb/rpm)
  • 第三方库的SDK制作
  • 持续集成/持续部署(CI/CD)都至关重要。
    据统计,使用规范的install规则可减少80%的部署错误,让开发者更专注于核心代码。

使用方法

项目结构


project/

├── CMakeLists.txt

├── include/

│   └── mylib/

│       └── mylib.h

├── src/

│   ├── mylib.cpp

│   └── main.cpp

└── build/

示例代码

  • mylib.h

#ifndef MYLIB_H

#define MYLIB_H



void printMessage();



#endif

  • mylib.cpp

#include <iostream>

#include "mylib.h"



void printMessage() {

    std::cout << "Hello from mylib!" << std::endl;
}

  • main.cpp

#include "mylib.h"



int main() {

    printMessage();
    return 0;
}

CMakeLists.txt


cmake_minimum_required(VERSION 3.10)

project(MyProject VERSION 1.0)



# 设置安装前缀

set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install")



# 添加库

add_library(mylib STATIC src/mylib.cpp)

target_include_directories(mylib PUBLIC include)



# 添加可执行文件

add_executable(myapp src/main.cpp)

target_link_libraries(myapp PRIVATE mylib)



# 安装库和头文件

install(TARGETS mylib

        ARCHIVE DESTINATION lib
        INCLUDES DESTINATION include)


# 安装可执行文件

install(TARGETS myapp

        DESTINATION bin)


# 安装额外的文件

install(FILES README.md

        DESTINATION share/doc/myproject)

构建和安装

  1. 在项目根目录下创建build文件夹并进入:

mkdir build

cd build

  1. 使用CMake生成构建文件并构建项目:

cmake ..

make

  1. 安装项目:

make install

详细介绍

安装库和头文件

  • 使用install(TARGETS)命令安装库目标。
  • ARCHIVE DESTINATION lib指定静态库文件的安装位置为lib目录。
  • INCLUDES DESTINATION include指定头文件的安装位置为include目录。

安装可执行文件

  • 使用install(TARGETS)命令安装可执行文件目标。
  • DESTINATION bin指定可执行文件的安装位置为bin目录。

安装额外的文件

  • 使用install(FILES)命令安装额外的文件。
  • DESTINATION share/doc/myproject指定文件的安装位置为share/doc/myproject目录。

安装目录结构

安装完成后,install目录的结构如下:


install/

├── bin/

│   └── myapp

├── include/

│   └── mylib/

│       └── mylib.h

└── lib/

    └── libmylib.a

使用安装的库

在其他项目中使用安装的库时,可以通过find_package命令查找并链接库:


find_package(MyProject REQUIRED)

include_directories(${MyProject_INCLUDE_DIRS})

target_link_libraries(myapp ${MyProject_LIBRARIES})

总结

通过CMake的install命令,可以方便地定义安装规则,将构建的文件安装到指定的位置。这对于项目的部署和分发非常重要,因为它确保了软件可以在不同的系统环境中正确运行。在实际项目中,合理使用install命令可以提高项目的可维护性和可扩展性。

当你在终端输入make install时,CMake就像一位经验丰富的管家,将编译产物分门别类地安置在系统的各个角落。掌握这个看似简单的命令,就能让软件部署从繁琐的手工操作升级为优雅的自动化流程,这正是现代软件开发应有的模样。

http://www.dtcms.com/a/111959.html

相关文章:

  • 11.多线程-信号量-线程池
  • AWS 云运维管理指南
  • ekf-imu --- 四元数乘法符号 ⊗ 的含义
  • SQLite 触发器
  • 深入解析CPU主要参数:选购与性能评估指南
  • ngx_alloc
  • 【2022】【论文笔记】基于相变材料的光学激活的、用于THz光束操作的编码超表面——
  • leetcode-代码随想录-哈希表-有效的字母异位词
  • 2007-2019年各省地方财政交通运输支出数据
  • 动物多导生理信号采集分析系统技术简析
  • 分治算法的使用条件
  • 页面简单传参
  • 【Linux】条件变量封装类及环形队列的实现
  • mybatis慢sql无所遁形
  • 学透Spring Boot — 009. Spring Boot的四种 Http 客户端
  • 科技赋能安居梦:中建海龙以模块化革新重塑城市更新范式
  • 多输入多输出 | Matlab实现BO-GRU贝叶斯优化门控循环单元多输入多输出预测
  • 图解AUTOSAR_SWS_LINStateManager
  • prism WPF 模块
  • #SVA语法滴水穿石# (003)关于 sequence 和 property 的区别和联系
  • Mysql 中有哪些日志结构?
  • LeetCode 687 -- 二叉树
  • HTML5+CSS3+JS小实例:带滑动指示器的导航图标
  • 开源且完全没有审核限制的大型语言模型的概述
  • 电力载波单灯控制器:智能照明的关键技术
  • AQS 等待队列中的线程自旋多少次后挂起?
  • 为PXIe控制器配置NI Linux实时操作系统安装软件
  • #python项目生成exe相关了解
  • C++20新增内容
  • 前端页面鼠标移动监控(鼠标运动、鼠标监控)鼠标节流处理、throttle、限制触发频率(setTimeout、clearInterval)