0

0

c++ cmake的基本用法怎么写_c++ cmake使用教程

穿越時空

穿越時空

发布时间:2025-10-17 16:44:02

|

400人浏览过

|

来源于php中文网

原创

CMake通过CMakeLists.txt生成构建系统,首先创建项目结构及CMake配置文件,设置版本、项目名、C++标准并定义可执行目标,接着在build目录中运行cmake命令生成Makefile并编译,支持多源文件添加与变量管理,可通过find_package链接OpenCV等外部库,推荐使用独立构建目录和编译类型控制,逐步掌握高级功能以应对复杂项目。

c++ cmake的基本用法怎么写_c++ cmake使用教程

CMake 是一个跨平台的构建系统生成器,广泛用于 C++ 项目中。它不直接编译代码,而是根据 CMakeLists.txt 文件生成 Makefile 或其他构建系统(如 Ninja、Visual Studio 项目),再通过这些工具完成编译。下面是一个实用的 C++ CMake 使用教程,帮助你快速上手。

1. 基本项目结构

一个典型的简单 C++ 项目结构如下:
my_project/
├── CMakeLists.txt
├── main.cpp

main.cpp 中写一个简单的程序:

#include 
int main() {
    std::cout << "Hello, CMake!" << std::endl;
    return 0;
}

2. 编写 CMakeLists.txt

在项目根目录创建 CMakeLists.txt,内容如下:

cmake_minimum_required(VERSION 3.10)
project(MyApp)

set(CMAKE_CXX_STANDARD 14)

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

add_executable(myapp main.cpp)

  • cmake_minimum_required:指定所需最低 CMake 版本。
  • project:定义项目名称,可选语言默认为 C 和 C++。
  • set(CMAKE_CXX_STANDARD 14):设置 C++ 标准为 C++14,也可设为 17 或 20。
  • add_executable:定义一个可执行文件 myapp,由 main.cpp 编译生成。

3. 构建项目

使用命令行进行构建(推荐在单独的构建目录中进行,避免污染源码):

mkdir build
cd build
cmake ..
make
  • mkdir build:创建构建目录。
  • cmake ..:在 build 目录中运行 cmake,读取上级目录的 CMakeLists.txt 并生成 Makefile。
  • make:调用 make 编译生成可执行文件。

完成后,在 build 目录下会生成可执行文件 myapp,运行它:

./myapp
# 输出: Hello, CMake!

4. 添加多个源文件

如果项目有多个 .cpp 文件,比如:

my_project/
├── CMakeLists.txt
├── main.cpp
├── hello.cpp
├── hello.h

在 CMakeLists.txt 中可以这样写:

Whimsical
Whimsical

Whimsical推出的AI思维导图工具

下载
cmake_minimum_required(VERSION 3.10)
project(MyApp)

set(CMAKE_CXX_STANDARD 14)

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

add_executable(myapp main.cpp hello.cpp)

也可以用变量简化:

set(SOURCES
    main.cpp
    hello.cpp
)

add_executable(myapp ${SOURCES})

5. 链接外部库(以 OpenCV 为例)

如果你的项目依赖第三方库,比如 OpenCV,可以这样配置:

find_package(OpenCV REQUIRED)

include_directories(${OpenCV_INCLUDE_DIRS})

add_executable(myapp main.cpp) target_link_libraries(myapp ${OpenCV_LIBS})

  • find_package:查找已安装的 OpenCV 包。
  • include_directories:添加头文件搜索路径。
  • target_link_libraries:将库链接到目标可执行文件。

确保系统中已安装 OpenCV,并配置好 CMake 的查找路径。

6. 常见技巧与建议

  • 始终使用独立的构建目录,避免生成文件混入源码。
  • 使用 target_compile_features 指定编译特性,比全局 set 更精确。
  • 对于大型项目,使用 add_subdirectory 组织多个模块。
  • 调试构建时可用 cmake -DCMAKE_BUILD_TYPE=Debug ..
  • 发布版本使用 Release 模式优化:-DCMAKE_BUILD_TYPE=Release

基本上就这些。CMake 功能强大,但初学者掌握以上内容就能应对大多数 C++ 项目构建需求。随着项目变复杂,可以逐步学习函数、宏、自定义命令等高级功能。

相关专题

更多
Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

37

2026.01.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

19

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

37

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

19

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

16

2026.01.13

PHP缓存策略教程大全
PHP缓存策略教程大全

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

6

2026.01.13

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

3

2026.01.13

交互式图表和动态图表教程汇总
交互式图表和动态图表教程汇总

本专题整合了交互式图表和动态图表的相关内容,阅读专题下面的文章了解更多详细内容。

45

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

9

2026.01.13

热门下载

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

精品课程

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

共578课时 | 46.1万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.0万人学习

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

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