CMake的使用

文章介绍了如何配置MinGW和CMake来在VSCode中建立C++编译环境。通过创建CMakeLists.txt文件,设置了项目结构,分离头文件和源文件,并展示了如何处理包含和链接库的问题。最后,给出了编译和生成可执行文件的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前置操作:

  1. 首先下载MinGW,放在C盘目录下,添加环境变量C:\MinGW\bin,将mingw32-make.exe拷贝一份改名成make.exe
  2. 下载安装cmake,重启VS code编译环境。

先示范一个简单版本的CMakeLists脚本:

cmake_minimum_required(VERSION 2.9)

project(demo)

add_definitions("-Wall -std=c++17")

#aux_source_directory(. DIR_SRCS)

add_executable(demo Demo.cpp Property.cpp)

进一步将源文件和头文件分离,目录结构:

demo.cpp
CMakeLists.txt
include
	|
	---TLV.h
	---Property.h
src
	|
	---Property.cpp

CMakeLists.txt

# 最小cmake版本要求
cmake_minimum_required(VERSION 2.9)

# 项目名称
project(demo)

# 添加定义,这里是编译选项显示所有warning,使用C++17标准
add_definitions("-Wall -std=c++17")

# 设置include路径变量INC_DIR
set(INC_DIR ${PROJECT_SOURCE_DIR}/include)

# 设置source路径变量SRC_DIR
set(SRC_DIR ${PROJECT_SOURCE_DIR}/src)

# 添加include目录,以包含头文件
include_directories(
    ${INC_DIR}
)

# 添加源文件目录,变量为SRC_LIST
aux_source_directory(
    ${SRC_DIR} SRC_LIST
)

# 添加可执行文件名,源文件
add_executable(demo Demo.cpp ${SRC_LIST})

控制台执行以下语句,生成makefile到当前目录下的build文件夹

cmake -G "MinGW Makefiles" . -B ./build

cd到build文件夹,执行make

make

============================================================================

另一个包含链接的例子:

  1. 创建一个main程序
    main.cpp
#include <iostream>
#include "./math/MathFun.h"

int main()
{
   std::cout<<"hello, world"<<std::endl;
   
   double base;
   double exp;
   std::cout << "Enter the base: " << std::endl;
   std::cin >> base;
   std::cout << "Enter the exp: " << std::endl;
   std::cin >> exp;

   double result = power(base, exp);
   std::cout << "Result: " << result << std::endl;

   return 0;
}

添加Mathfun.h与MathFun.cpp
Mathfun.h

double power(double base, int exponent);

Mathfun.cpp

#include "./MathFun.h"

double power(double base, int exponent) {
    int result = base;
    int i;

    if (exponent == 0) {
        return 1;
    }

    for (i = 1; i < exponent; ++i) {
        result = result * base;
    }

    return result;
}

  1. 创建Cmake file
    顶层
# cmake 最低版本要求
cmake_minimum_required(VERSION 2.9)

# 定义整个CMake的工程名
project(main)

# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_SRCS 变量
aux_source_directory(. DIR_SRCS)

# 添加 math 子目录
add_subdirectory(math)

# 指定生成目标
add_executable(main main.cpp)

# 添加链接库
target_link_libraries(main MathFun)

mathfun层

# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_LIB_SRCS 变量

aux_source_directory(. DIR_LIB_SRCS)

# 生成链接库
add_library(MathFun ${DIR_LIB_SRCS})
  • make步骤
  • 控制台中输入cmake -G "MinGW Makefiles" . 这是Windows下调用MinGW编译器的指令。
  • 一个完善的编译指令:cmake -G "MinGW Makefiles" . -B ./build
  • 上述指令完成后,生成了Makefile,控制台输入make即开始编译可执行程序。

文件层次结构:
main.cpp
CMakeLists.txt
math
|
—Mathfun.h
—Mathfun.cpp
—CMakeLists.txt

参考文章:CMake 入门实战

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值