当前位置: 首页 > news >正文

【C++基础】CMake项目

CMake 项目简介

CMake 是一个跨平台的构建工具,用于管理 C/C++ 项目的编译过程。它通过生成标准的构建文件(如 Makefile、Visual Studio 项目文件、Ninja 构建文件等)来简化项目的构建流程。CMake 的核心是 CMakeLists.txt 文件,它定义了项目的构建规则、依赖关系和编译选项。


CMake 项目的基本结构

一个典型的 CMake 项目通常包含以下文件和目录:

MyProject/
├── CMakeLists.txt          # 项目的根 CMake 配置文件
├── include/                # 头文件目录
│   └── mylib.h            # 头文件
├── src/                    # 源文件目录
│   ├── main.cpp           # 主程序源文件
│   └── mylib.cpp          # 库源文件
├── tests/                  # 测试代码目录
│   └── test.cpp           # 测试代码
└── build/                  # 构建目录(由用户创建,用于存放构建文件)

CMakeLists.txt
# 指定 CMake 的最低版本
cmake_minimum_required(VERSION 3.10)

# 定义项目名称和版本
project(MyProject VERSION 1.0)

# 设置 C++ 标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 设置编译选项
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -O2")

# 添加头文件目录
include_directories(${PROJECT_SOURCE_DIR}/include)

# 添加可执行文件
add_executable(myprogram src/main.cpp src/mylib.cpp)

# 添加静态库
add_library(mylib STATIC src/mylib.cpp)

# 链接库
target_link_libraries(myprogram mylib)

# 查找并链接外部库
find_package(OpenCV REQUIRED)
target_link_libraries(myprogram ${OpenCV_LIBS})

# 添加子目录
add_subdirectory(tests)

# 安装规则
install(TARGETS myprogram DESTINATION bin)
install(TARGETS mylib DESTINATION lib)
install(DIRECTORY include/ DESTINATION include)

# 启用测试
enable_testing()

# 添加测试
add_test(NAME mytest COMMAND myprogram)
src/main.cpp
#include <iostream>
#include "mylib.h"

int main() {
    std::cout << "Hello, World!" << std::endl;
    mylib::printMessage("This is a message from mylib.");
    return 0;
}
src/mylib.cpp
#include "mylib.h"
#include <iostream>

void mylib::printMessage(const std::string& message) {
    std::cout << message << std::endl;
}
include/mylib.h
#ifndef MYLIB_H
#define MYLIB_H

#include <string>

namespace mylib {
    void printMessage(const std::string& message);
}

#endif // MYLIB_H
tests/test.cpp
#include <iostream>
#include "mylib.h"

int main() {
    mylib::printMessage("This is a test message.");
    return 0;
}

构建和运行项目

  1. 创建构建目录

    mkdir build
    cd build
    
  2. 生成构建文件

cmake …


3. **编译项目**:

```bash
make
  1. 运行可执行文件

./myprogram


5. **运行测试**:

```bash
make test

总结

CMake 项目通过 CMakeLists.txt 文件定义构建规则,支持跨平台构建。一个典型的 CMake 项目包括:

  1. 基本配置(项目名称、版本、编译选项)。
  2. 目标定义(可执行文件、库)。
  3. 依赖管理(头文件、外部库)。
  4. 安装规则和测试。

通过合理组织 CMake 项目,可以轻松管理复杂的构建过程,并实现跨平台支持。

相关文章:

  • 使用 Spring 的 FactoryBean 创建和获取 Bean 对象
  • 将 VOC 格式 XML 转换为 YOLO 格式 TXT
  • 数据结构 -- 二叉树的存储结构
  • 使用python seaborn创建配对图:从核心概念到实战案例
  • 跨系统投屏:Realme手机(远程)投屏到Linux系统的简单方法
  • winx64 安装对应版本火狐浏览器驱动
  • 图生生AI修图,用“画面扩充“重构创作想象
  • 基于FPGA的3U机箱温度采集板PT100,应用于轨道交通/电力储能等
  • 如何在 Github 上获得 1000 star?
  • AI预测体彩排3新模型百十个定位预测+胆码预测+杀和尾+杀和值2025年3月18日第22弹
  • 如何把视频转成动态图?
  • 调试 Rust + WebAssembly 版康威生命游戏
  • 【JavaEE】Mybatis 简单启动
  • 技术革命、需求升级与商业生态迭代——基于开源AI大模型与智能商业范式的创新研究
  • Batch Norm和Layer Norm
  • 《论语别裁》第01章 学而(29) 《三国演义》的幕后功劳
  • ubuntu20.04关机进程阻塞解决方法
  • 3.17BUUCTF练习day1
  • MySQL 客户端连不上(1045 错误)原因全解析
  • 项目实战:基于瑞萨RA6M5构建多节点OTA升级-创建工程MCUBoot<二>
  • 周启鸣加盟同济大学,曾任香港浸会大学深圳研究院院长
  • 熊出没!我驻日本札幌总领馆提示中国公民注意人身安全
  • 吉林:消纳绿电,“氢”装上阵
  • “80后”李灿已任重庆市南川区领导,此前获公示拟提名为副区长人选
  • 肖峰读《从塞北到西域》︱拉铁摩尔的骆驼
  • 巴基斯坦首都及邻近城市听到巨大爆炸声