CMake简单收录

8.1 CMake简介

  • CMake是一个跨平台的编译工具,能输出各种各样的makefile或project文件。
  • CMake是一个强大的自动化配置工具,通过读取脚本文件——CMakeLists.txt中的规则来构建编译系统。
  • CMake并不直接构建出最终的文件,而是生成标准的Makefile文件或其他需要的平台上的项目文件。

8.2 CMake安装

Android studio新建JNI项目时会生成基础的CMakeList.txt,修改该文件可以在项目中添加或修改项目各种配置属性。

PC本地的cmake安装可以在Download | CMake中下载最新版的CMake,按照解压后包中的README文件进行安装。

如 Linux中:

tar -zxvf cmake安装包   //解压缩cmake包

cd cmake包  //进入cmake包

./bootstrap && make && sudo make install   //运行安装程序

cmake --version    //查看cmake版本,检验是否安装成功

8.3 编译流程

  • Windows(未验证)
    • 创建build文件夹
    • 在build文件夹中执行 cmake .. 命令
    • 用Visual Studio打开生成的demo.sln,然后编译
  • linux
    • 依次输入以下命令:

mkdir build  //创建build目录

cd build   //进入build目录

cmake ..   //执行cmake配置并生成makefile,需要上级目录有CMakeLists.txt文件

make   //启动makefile文件

8.4 常用命令

CMakeLists.txt 的语法比较简单,由命令、注释和空格组成。其中命令是不区分大小写的。指令是大小写无关的,参数和变量是大小写相关的,推荐全部使用大写指令。符号 # 后面的内容被认为是注释。命令由命令名称、小括号和参数组成,参数之间使用空格进行间隔。

cmake_minimum_required(version 版本号)   //指定cmake的最小版本

project(项目名称)   //定义工程名称

set(var [value])   //显式定义变量

add_library(库名称  STATIC 代码文件名)  //编译静态库

add_library(库名称 SHARED 代码文件名) //编译动态库

add_executable(可执行程序名 代码文件名称)   //编译可执行程序

add_dependencies(target item1 item2...)  //指定target依赖与其他item, 这里的item必须是add_executable, add_library,

add_custom_target等命令创建的目标

 

link_directories(链接库目录)   //设置链接库目录

target_link_libraries(target item1 item2...)   //指定target需要连接item1, item2等

include_directories(包含目录)  //设置包含目录

add_definitions(-D宏名称)  //设置宏定义,如:add_definitions(-DLINUX)

file(GLOB ALL_FILE_PATH 文件目录)   //将目录中的文件添加到ALL_FILE_PATH中

add_subdirectory(src)  //添加子文件夹,会在执行完当前CMakeLists.txt后执行src子目录下的CMakeLists.txt

message(属性   消息)   //输出消息,含正常,警告,错误等属性的信息

8.5 预定义变量

PROJECT_SOURCE_DIR                 工程的根目录
PROJECT_BINARY_DIR                   运行cmake命令的目录,通常是${PROJECT_SOURCE_DIR}/build
CMAKE_INCLUDE_PATH                环境变量,非cmake变量
CMAKE_LIBRARY_PATH                 环境变量
CMAKE_CURRENT_SOURCE_DIR  当前处理的CMakeLists.txt所在的路径
CMAKE_CURRENT_BINARY_DIR   target编译目录,使用ADD_SURDIRECTORY(src bin)可以更改此变量的值
CMAKE_CURRENT_LIST_FILE        输出调用这个变量的CMakeLists.txt的完整路径
CMAKE_CURRENT_LIST_LINE       输出这个变量所在的行
CMAKE_MODULE_PATH               定义自己的cmake模块所在的路径
EXECUTABLE_OUTPUT_PATH       重新定义目标二进制可执行文件的存放位置
LIBRARY_OUTPUT_PATH              重新定义目标链接库文件的存放位置
PROJECT_NAME                           返回通过PROJECT指令定义的项目名称
CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS 用来控制IF ELSE语句的书写方式

<think>嗯,用户想在Ubuntu上安装CMake 3.24,我得想想怎么一步步指导他们。首先,我应该确认Ubuntu的默认仓库里有没有这个版本。因为我知道Ubuntu的官方源可能不会总是最新的,特别是像CMake这样的工具,新版本发布后可能需要一段时间才会被收录进去。比如,Ubuntu 22.04默认的CMake版本可能是3.22或者更早,所以用户可能需要通过其他方法来安装更新的版本。 接下来,可能的安装方法有几个:使用预编译的二进制包、从源码编译安装,或者添加第三方PPA。我需要比较这些方法的优缺点。预编译的二进制比较直接,不需要处理依赖,但需要手动下载和配置。源码编译可以确保版本正确,但步骤比较繁琐,特别是对于新手来说可能容易出错。PPA的话,如果有可靠的第三方源,可能更方便,但用户需要信任该源的安全性。 首先,我应该建议用户先检查当前安装的CMake版本,使用`cmake --version`。如果他们已经有了旧版本,可能需要先卸载或者更新。不过,有时候多个版本共存可能会有冲突,所以需要注意。 然后,对于预编译二进制的方法,用户需要从CMake官网下载对应的.tar.gz文件,解压后设置环境变量。这里需要详细说明解压命令,比如使用tar -xzvf,然后移动到合适的目录,比如/opt或者用户的主目录。然后,添加bin目录到PATH环境变量,可以通过修改.bashrc或者.profile文件,这样每次登录都会生效。不过用户可能不熟悉这些步骤,需要一步步指导,包括如何编辑文件,保存退出,然后source一下使配置生效。 另外,安装后可能需要验证是否成功,用cmake --version查看版本是否正确。如果有问题,可能是PATH设置不正确,需要检查路径是否正确添加。 另一种方法是使用snap包,但snap版本可能不是最新的,或者用户可能不喜欢使用snap。所以这可能作为备选方案,但可能不是首选。 源码编译的话,需要先安装依赖项,比如gcc、make、libssl-dev等。然后下载源码,运行bootstrap脚本,make,然后make install。不过需要注意权限问题,可能需要sudo,特别是安装到系统目录时。但源码编译可能会覆盖系统原有的CMake,或者安装到不同的路径,需要用户确认是否会影响现有项目。 第三种方法是使用PPA,比如Kitware的PPA,他们提供了最新的CMake版本。用户需要添加PPA源,然后更新并安装。这种方法相对简单,但需要确保PPA的可靠性。另外,不同Ubuntu版本支持的PPA可能不同,需要用户根据他们的系统版本选择正确的PPA。 然后,可能需要比较这些方法的适用场景。比如,如果用户需要快速安装且不想添加第三方源,预编译二进制可能更好。如果用户希望系统自动更新CMake,PPA可能更合适。而源码安装适合需要自定义配置的情况。 在步骤中,可能会遇到的问题包括:权限不足,需要sudo;依赖项缺失,导致编译失败;PATH设置错误,导致找不到新安装的cmake;或者旧版本残留导致冲突。需要提醒用户注意这些点,并给出解决办法,比如使用sudo运行命令,安装必要的依赖包,检查PATH变量等。 最后,应该总结一下,推荐几种方法,并说明各自的优缺点,让用户根据自己的情况选择。比如推荐使用预编译二进制或PPA,因为它们相对简单,而源码编译留给有经验的用户。</think>在Ubuntu系统上安装CMake 3.24的步骤如下,根据需求和系统环境可选择不同方法: --- ### 方法1:使用预编译二进制(推荐) **步骤1:卸载旧版本(如有必要)** ```bash sudo apt remove cmake -y ``` **步骤2:安装依赖项** ```bash sudo apt update sudo apt install build-essential libssl-dev -y ``` **步骤3:下载CMake 3.24** ```bash wget https://github.com/Kitware/CMake/releases/download/v3.24.0/cmake-3.24.0-linux-x86_64.tar.gz ``` **步骤4:解压并安装** ```bash tar -xzvf cmake-3.24.0-linux-x86_64.tar.gz sudo mv cmake-3.24.0-linux-x86_64 /opt/cmake ``` **步骤5:配置环境变量** ```bash echo 'export PATH=/opt/cmake/bin:$PATH' >> ~/.bashrc source ~/.bashrc ``` **验证安装** ```bash cmake --version # 应显示 "cmake version 3.24.0" ``` --- ### 方法2:通过官方PPA安装 **步骤1:添加Kitware的APT仓库** ```bash wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null echo "deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/kitware.list ``` **步骤2:更新并安装** ```bash sudo apt update sudo apt install cmake=3.24.0-0kitware1 -y ``` --- ### 方法3:从源码编译 **步骤1:安装编译依赖** ```bash sudo apt update sudo apt install build-essential libssl-dev -y ``` **步骤2:下载源码并编译** ```bash wget https://github.com/Kitware/CMake/releases/download/v3.24.0/cmake-3.24.0.tar.gz tar -xzvf cmake-3.24.0.tar.gz cd cmake-3.24.0 ./bootstrap make -j$(nproc) sudo make install ``` --- ### 常见问题解决 1. **权限问题**:所有需要写入系统目录的操作需加`sudo` 2. **版本冲突**:若系统原有CMake残留,可尝试`hash -r`刷新缓存 3. **依赖缺失**:确保完整执行`sudo apt install build-essential libssl-dev` --- ### 方法对比 | 方法 | 优点 | 缺点 | |------------|-------------------------|-----------------------| | 预编译二进制| 无需编译,快速安装 | 需手动管理更新 | | PPA | 自动更新 | 依赖第三方仓库可信度 | | 源码编译 | 完全控制编译选项 | 耗时且步骤复杂 | 建议优先选择**方法1**或**方法2**,若需长期维护则推荐PPA方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值