cmake 使用(五)

本文是 cmake 使用的第五篇,主要介绍如何将自己的软件安装到系统中。

上一篇的链接为:cmake 使用(四)_QCZL_CC的博客-CSDN博客,主要介绍如何创建一个动态库并引用。

目录结构如下:

04-installing/
├── CMakeLists.txt
├── cmake-examples.conf
├── include
│   └── installing
│       └── hello.h
└── src
    ├── hello.c
    └── main.c

CMakeLists.txt 规则如下:

# cmake 最低版本号
cmake_minimum_required(VERSION 3.5)

# 项目名称
project(cmake_examples_install)

################################################
# 创建库
################################################

# 从库源生成动态库,用于创建一个名为 libcmake_examples_inst.so 的动态库
add_library(cmake_examples_inst SHARED
    src/hello.c
)

# 将范围设置为 PUBLIC,这将导致包含的目录在以下地方使用:
# 编译库时
# 编译链接库的任何其他目标时
# 其他的范围描述如下:
#   PRIVATE   - 目录被添加到这个目标的包含目录中
#   INTERFACE - 该目录将添加到链接此库的任何目标的包含目录中
#   PUBLIC    - 包含在此库中以及链接此库的任何目标中
target_include_directories(cmake_examples_inst
    PUBLIC
        ${PROJECT_SOURCE_DIR}/include
)

################################################
# 创建可执行文件
################################################

add_executable(cmake_examples_inst_bin
    src/main.c
)

# 将新的 cmake_examples_inst 目标与 hello_binary 目标链接起来
# 这告诉 CMake 在链接期间将 cmake_examples_inst 链接到 hello_binary 可执行文件。它还将从链接库目标传播具有 PUBLIC 或 INTERFACE 范围的任何包含目录
target_link_libraries(cmake_examples_inst_bin
    PRIVATE
        cmake_examples_inst
)

################################################
# 安装
# CMake 提供了添加 make install 目标的能力,以允许用户安装二进制文件、库和其他文件。
# 基本安装位置由变量 CMAKE_INSTALL_PREFIX 控制,可以使用 ccmake 或通过使用 cmake 调用 cmake .. -DCMAKE_INSTALL_PREFIX=${install_path} 设置
################################################

# 二进制文件
install (TARGETS cmake_examples_inst_bin
        DESTINATION bin
)

# 库
install (TARGETS cmake_examples_inst
        LIBRARY DESTINATION lib
)

# 头文件
install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/
        DESTINATION include
)

# 配置文件
install (FILES cmake-examples.conf
        DESTINATION etc
)

构建过程:

        1:mkdir build        创建该目录的目的是为了将编译产物和源文件分离

        2:cd build && cmake ..        cmake 后面第一个参数应该是 CMakeLists.txt 文件所在目录。此实例中 CMakeLists.txt 在 build 目录的上一级,所以使用 cmake ..

        3:make

        4:make install (安装到系统目录可能需要管理员权限 sudo)

下一篇:cmake 使用(六)_QCZL_CC的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值