网站首页 > 博客文章 正文
CMake是一个跨平台的自动化构建系统,它使用一个名为 CMakeLists.txt的文件来描述构建过程,可以生成标准的构建文件,如Unix的Makefile或Windows Visual Studio的工程文件。CMake支持多种编程语言,主要是C、C++,但也支持Fortran等。与传统的构建系统相比,CMake的一个主要优势是它能够管理大型项目中复杂的构建过程。
安装CMake
安装CMake的过程会根据你所使用的操作系统而有所不同。以下是针对常见操作系统的CMake安装指南。
Windows
- 访问CMake的官方下载页面。
- 在“Binary distributions”部分找到适用于Windows的安装程序,例如 cmake-3.28.3-windows-x86_64.msi(版本号可能不同)。
- 下载安装程序后,双击运行。
- 跟随安装向导的指示完成安装。在安装过程中,可以选择是否将CMake添加到系统的PATH环境变量中。推荐添加到PATH中,这样可以从任意位置访问CMake命令。
macOS
在macOS上,可以通过Homebrew包管理器来安装CMake。
- 打开终端。
- 如果尚未安装Homebrew,可以通过在终端中运行以下命令来安装: bash/bin/bash-c"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- 使用Homebrew安装CMake: bash brew install cmake
Linux
在基于Debian的Linux发行版(如Ubuntu)上,可以使用 apt包管理器安装CMake。
- 打开终端。
- 首先更新软件包列表: bash sudo apt update
- 安装CMake: bash sudo apt install cmake
对于基于Red Hat的发行版(如Fedora或CentOS),可以使用 dnf(或 yum,取决于发行版)来安装CMake:
sudo dnf install cmake
或者:
sudo yum install cmake
验证安装
安装完成后,可以在终端或命令提示符中运行以下命令来验证CMake是否正确安装:
cmake --version
如果CMake已正确安装,该命令将输出CMake的版本信息。
注释
单行注释
单行注释以 #字符开始,直到该行结束。任何 #后面的内容都会被CMake解释器忽略。
# 这是一个单行注释
# 设置最小CMake版本要求
cmake_minimum_required(VERSION 3.10)
# 设置项目名称
project(MyProject)
块注释
CMake 3.0及以上版本支持使用块注释来实现多行注释。块注释以 #[[开始,并以 ]]结束。在这两个标记之间的所有内容都被CMake视为注释,将被忽略。
#[[
这是一个多行注释的例子。
所有这些行都将被CMake忽略。
]]
cmake_minimum_required(VERSION 3.10)
project(MyProject)
# 单行注释还是像以前一样工作
set(CMAKE_CXX_STANDARD 11)
块注释是在CMake 3.0中引入的,所以如果你在使用较旧版本的CMake,这个功能将不可用。
示例
标记TODO和FIXME:使用注释来标记需要进一步工作(TODO)或需要修复的问题(FIXME)。
# TODO: 添加对其他平台的支持
if(WIN32)
# 特定于Windows平台的设置
endif()
# FIXME: 这里有一个链接问题需要解决
target_link_libraries(MyExecutable SomeLibrary)
快速上手
假设你有一个简单的C语言项目,目录结构如下:
MyProject/
├── CMakeLists.txt
├── add.c
├── div.c
├── head.h
├── main.c
├── mult.c
└── sub.c
head.h
#ifndef _HEAD_H
#define _HEAD_H
// 加法
int add(int a, int b);
// 减法
int subtract(int a, int b);
// 乘法
int multiply(int a, int b);
// 除法
double divide(int a, int b);
#endif
add.c
#include <stdio.h>
#include "head.h"
int add(int a, int b)
{
return a + b;
}
div.c
#include <stdio.h>
#include "head.h"
double divide(int a, int b)
{
return (double)a / b;
}
mult.c
#include <stdio.h>
#include "head.h"
int multiply(int a, int b)
{
return a * b;
}
sub.c
#include <stdio.h>
#include "head.h"
int subtract(int a, int b)
{
return a - b;
}
main.c
#include <stdio.h>
#include "head.h"
int main()
{
int a = 20;
int b = 12;
printf("a = %d, b = %d\n", a, b);
printf("a + b = %d\n", add(a, b));
printf("a - b = %d\n", subtract(a, b));
printf("a * b = %d\n", multiply(a, b));
printf("a / b = %f\n", divide(a, b));
return 0;
}
编写CMakeLists.txt
CMakeLists.txt定义了项目的构建规则。
cmake_minimum_required(VERSION 3.10)
# 设置项目名称和版本
project(MyProject VERSION 1.0)
# 指定C标准
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED True)
# 添加可执行文件
add_executable(app main.c add.c div.c mult.c sub.c)
这个文件首先声明了CMake的最低版本要求,然后设置了项目的名称和版本。接着,它设置了C语言的标准,并且指示CMake添加一个可执行文件 app,该可执行文件是从 main.c源文件构建的, add.c、 div.c、 mult.c、 sub.c和 main.c都将被编译,并且 add、 subtract、 multiply、 divide这些函数的定义将被包含在最终的可执行文件中。
构建项目
在项目目录(即 CMakeLists.txt所在的目录)中,运行以下命令来构建你的项目:
- 创建一个构建目录并进入:
mkdir build
- 运行CMake来配置项目并生成Release版本构建系统:
cmake -S . -B build
- 构建项目:
cmake --build build
如果一切顺利,这将在 build目录中生成 app可执行文件。
猜你喜欢
- 2024-10-03 Qt4/5升级到Qt6吐血经验总结V202308
- 2024-10-03 微软兑现承诺:更新Linux子系统,编译WSL 2内核只需3步
- 2024-10-03 centos7使用源码从python2升级到python3,干货值得收藏
- 2024-10-03 Clion2021大版本更新亮点一览(clion2020.1)
- 2024-10-03 CPack 入门指南(cpaks)
- 2024-10-03 C/C++ 开发工具 CLion 新版发布,10 大新功能抢先看
- 2024-10-03 centos7升级glibc(centos7升级gcc)
- 2024-10-03 ReactOS年度报告:改进shell,增强应用管理
- 2024-10-03 CMake构建Makefile深度解析:从底层原理到复杂项目
- 2024-10-03 CBrother升级至V2.5.5,支持编译和打包
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- messagesource (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)