C++ - 使用CMake构建vs项目
1. CMake概述
CMake 是一个项目构建工具,并且是跨平台的。关于项目构建我们所熟知的还有Makefile(通过 make 命令进行项目的构建),大多是IDE软件都集成了make,比如:VS 的 nmake、linux 下的 GNU make、Qt 的 qmake等,如果自己动手写 makefile,会发现,makefile 通常依赖于当前的编译平台,而且编写 makefile 的工作量比较大,解决依赖关系时也容易出错。
而 CMake 恰好能解决上述问题, 其允许开发者指定整个工程的编译流程,在根据编译平台,自动生成本地化的Makefile和工程文件,最后用户只需make编译即可,所以可以把CMake看成一款自动生成 Makefile的工具,其编译流程如下图:
蓝色虚线表示使用makefile构建项目的过程
红色实线表示使用cmake构建项目的过程
介绍完CMake的作用之后,再来总结一下它的优点:
跨平台
能够管理大型项目
简化编译构建过程和编译过程
可扩展:可以为 cmake 编写特定功能的模块,扩充 cmake 功能
2. 下载安装CMake
官网下载链接:https://cmake.org/download/
选择 cmake-3.30.0-windows-x86_64.msi 进行下载
3. 使用CMake构建vs工程
1、首先创建CMake工程,创建一个叫demo的文件夹
2、在文件夹内分别创建Engine,Project,ThridParty,build,和一个CMakeLists.txt文件,Engine放置引擎核心库,Project为相应的工程代码,ThridParty为外部第三方库
3、为了方便测试,在Project文件夹下准备了这么几个测试文件
add.c
#include <stdio.h>
#include "head.h"
int add(int a, int b)
{
return a+b;
}
sub.c
#include <stdio.h>
#include "head.h"
int subtract(int a, int b)
{
return a-b;
}
mult.c
#include <stdio.h>
#include "head.h"
int multiply(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;
}
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
main.c
#include <stdio.h>
#include "head.h"
//#include <iostream>
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));
system("pause");
return 0;
}
4、在CMakeLists.txt文件中填入如下cmake命令
# “#”表示这行是注释
#设置CMake最低版本
cmake_minimum_required (VERSION 3.10.2)
#设置项目名称
project(demo)
#设置可执行文件,"demo"为可执行文件名称,"Project/main.cpp"为当前CMakeLists.txt文件的相对目录下的文件
add_executable(demo Project/head.h Project/add.c Project/div.c Project/main.c Project/mult.c Project/sub.c)
5、使用CMake GUI(可以搜索CMake找到),在Where is the source code:中,选择demo文件夹,由于该文件夹下有CMakeLists.txt文件,所以可以对该文件夹下的内容进行工程构建
6、在Where to build the binaries:中选择build文件夹作为构建后文件的存放位置(没有build文件夹可以自行创建)
7、点击下方的Generate按钮(也可以先点击Configure再点击Generate)
8、如果是第一次构建会弹出一个窗口,根据自己的情况选择使用Visual Studio 2013来构建工程,点击Finish
9、如无报错,构建完成后,打开build文件夹,可以看到已经生成了sln文件
10、双击demo.sln文件即可打开生成的vs工程