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
    评论
CMakeList是一个用于构建和管理项目的构建工具。通过CMakeList可以将源代码编译成可执行文件或库文件。在一个AndroidStudio项目中,可以通过CMakeList来生成jni库文件。 生成库文件的过程通常包括以下几个步骤: 1. 配置CMakeList文件:首先,在项目的CMakeList文件中配置项目的名称和版本信息。可以使用`PROJECT`命令来设置项目名称,例如`PROJECT(HELLO)`。 2. 添加子目录:如果项目需要包含其他的源代码文件,可以使用`ADD_SUBDIRECTORY`命令来添加子目录。在这个命令中,可以指定子目录的路径,以及子目录中的源代码文件将生成的库文件的输出路径。 3. 设置库文件属性:可以使用`SET_TARGET_PROPERTIES`命令来设置生成的库文件的属性,如版本号等。例如,可以使用`SET_TARGET_PROPERTIES(hello PROPERTIES VERSION 1.2 SOVERSION 1)`来设置库文件的版本号。 通过以上步骤配置和设置CMakeList文件后,编译项目时,CMake会根据CMakeList文件的内容生成对应的库文件。 请注意,以上是一个简单的说明,具体的配置和设置还依赖于项目的具体需求和CMake的配置。详细的操作方法和更多信息可以参考相关文档和资源。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Android studio Jni调用第三方库(CMakelist)](https://download.csdn.net/download/qq_35532751/10138080)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [CMakeList创建静态库和动态库](https://blog.csdn.net/qq_41861406/article/details/123781785)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值