0

0

c++中CMake如何使用_CMake构建c++项目入门指南

下次还敢

下次还敢

发布时间:2025-09-23 19:59:01

|

280人浏览过

|

来源于php中文网

原创

CMake是C++项目跨平台构建的关键工具,通过编写CMakeLists.txt生成适配不同环境的构建配置。首先安装CMake并验证版本,创建项目后编写简单main.cpp和CMakeLists.txt,使用cmake_minimum_required、project、add_executable定义基本构建逻辑。推荐在build目录中进行外部构建,执行mkdir build && cd build && cmake .. && make完成编译运行。项目扩展时可添加src和include子目录,用add_library创建静态库,target_link_libraries实现链接,并建议用target_include_directories替代全局include_directories以提升模块化。还可设置set(CMAKE_CXX_STANDARD 17)指定C++标准,使用-DCMAKE_BUILD_TYPE=Debug生成调试版本。掌握这些基础即可高效组织和构建C++项目。

c++中cmake如何使用_cmake构建c++项目入门指南

在C++开发中,CMake是一个跨平台的构建系统生成工具,它不直接编译代码,而是根据CMakeLists.txt文件生成适用于不同编译环境(如Makefile、Ninja、Visual Studio项目等)的构建配置。对于初学者来说,掌握如何使用CMake来组织和构建C++项目是提升开发效率的重要一步。

1. 安装CMake

在开始之前,确保你的系统已安装CMake:

  • Windows:可从官网下载安装包,或使用vcpkg、choco等工具安装。
  • macOS:使用Homebrew执行 brew install cmake
  • Linux(Ubuntu/Debian):运行 sudo apt install cmake

安装完成后,在终端输入 cmake --version 验证是否成功。

2. 创建最简单的C++项目

新建一个项目目录,例如 my_cpp_project,结构如下:

立即学习C++免费学习笔记(深入)”;

my_cpp_project/
├── CMakeLists.txt
└── main.cpp

编辑 main.cpp

#include iostream>
int main() {
std::cout return 0;
}

创建 CMakeLists.txt 文件,内容如下:

cmake_minimum_required(VERSION 3.10)
project(HelloCMake)
add_executable(hello main.cpp)

说明:

  • cmake_minimum_required:指定所需最低CMake版本。
  • project:定义项目名称,也可指定语言(默认会检测C/C++)。
  • add_executable:将源文件编译为可执行程序。

3. 构建并运行项目

在项目根目录下操作:

Android 开发者指南 第一部分:入门
Android 开发者指南 第一部分:入门

Android文档-开发者指南-第一部分:入门-中英文对照版 Android提供了丰富的应用程序框架,它允许您在Java语言环境中构建移动设备的创新应用程序和游戏。在左侧导航中列出的文档提供了有关如何使用Android的各种API来构建应用程序的详细信息。第一部分:Introduction(入门) 0、Introduction to Android(引进到Android) 1、Application Fundamentals(应用程序基础) 2、Device Compatibility(设备兼容性) 3、

下载
mkdir build
cd build
cmake ..
make

解释:

  • 创建 build 目录用于存放编译产物,避免污染源码目录(推荐做法)。
  • cmake .. 读取上级目录的 CMakeLists.txt 并生成构建系统(这里是Makefile)。
  • make 执行编译,生成可执行文件 hello(Linux/macOS)或 hello.exe(Windows)。

运行程序:./hello,输出:Hello, CMake!

4. 添加多个源文件和子目录

当项目变大时,需要管理多个源文件。示例结构:

my_cpp_project/
├── CMakeLists.txt
├── main.cpp
├── src/
│   ├── math.cpp
│   └── math.h
└── include/
    └── math.h

修改根目录 CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(MyApp VERSION 1.0)

# 指定头文件搜索路径
include_directories(include)

# 定义一个库
add_library(math_lib src/math.cpp)

# 添加可执行文件
add_executable(myapp main.cpp)

# 链接库
target_link_libraries(myapp math_lib)

其中 math.cpp 可包含简单函数,如加法实现。通过 target_link_libraries 将库链接到主程序。

5. 常用技巧与建议

以下是实际开发中的实用做法:

  • 始终使用 build 目录进行外部构建。
  • 使用 target_include_directories() 替代全局 include_directories(),更安全:
target_include_directories(math_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
  • 设置C++标准:
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
  • 调试构建:使用 cmake -DCMAKE_BUILD_TYPE=Debug .. 生成带调试信息的版本。

基本上就这些。CMake入门并不复杂,但功能强大。从简单的单文件项目开始,逐步掌握多文件、库链接、编译选项等常用功能,就能高效管理自己的C++项目了。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

503

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

545

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

113

2025.08.29

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

200

2025.08.29

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

832

2023.07.26

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1131

2023.07.27

windows照片无法显示
windows照片无法显示

当我们尝试打开一张图片时,可能会出现一个错误提示,提示说"Windows照片查看器无法显示此图片,因为计算机上的可用内存不足",本专题为大家提供windows照片无法显示相关的文章,帮助大家解决该问题。

804

2023.08.01

windows查看端口被占用的情况
windows查看端口被占用的情况

windows查看端口被占用的情况的方法:1、使用Windows自带的资源监视器;2、使用命令提示符查看端口信息;3、使用任务管理器查看占用端口的进程。本专题为大家提供windows查看端口被占用的情况的相关的文章、下载、课程内容,供大家免费下载体验。

454

2023.08.02

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

54

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 8.2万人学习

Git 教程
Git 教程

共21课时 | 3.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号