📢 声明:
转载,请先标注出处哦!编写不易,尊重一下劳动成果哦!
个人博客网站 ==》https://alicewanttobackuw.github.io/
github ==》https://github.com/AliceWantToBackUw
csdn ==》https://blog.csdn.net/lengyue29
2024-04-22 更新:添加了 3.2 目录下的删除操作文章的超链接
# Visual Studio Code 使用 CMake
# 1 前置条件
- 安装
CMake
:通过cmake -version
检查有无安装成功 - 安装
MinGW
(目录 3.2 需要):参考文章 http://t.csdnimg.cn/9Jo5Z
# 2 创建一个简单项目
//-------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 | |
//-------add.cpp | |
#include <stdio.h> | |
#include "head.h" | |
int add(int a, int b) | |
{ | |
return a + b; | |
} | |
//-------div.cpp | |
#include <stdio.h> | |
#include "head.h" | |
double divide(int a, int b) | |
{ | |
return (double)a / b; | |
} | |
//-------mul.cpp | |
#include <stdio.h> | |
#include "head.h" | |
int multiply(int a, int b) | |
{ | |
return a * b; | |
} | |
//-------sub.cpp | |
#include <stdio.h> | |
#include "head.h" | |
// 减法 | |
int subtract(int a, int b) | |
{ | |
return a - b; | |
} | |
//-------main.cpp | |
#include <stdio.h> | |
#include "head.h" | |
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)); | |
return 0; | |
} |
# 项目结构
03cmake | |
├─ .vscode | |
│ ├─ c_cpp_properties.json | |
│ └─ tasks.json | |
├─ add.cpp | |
├─ CMakeLists.txt | |
├─ div.cpp | |
├─ head.h | |
├─ main.cpp | |
├─ mult.cpp | |
└─ sub.cpp |
# 3 Windows 下生成可执行程序
# 3.1 通过生成 vs 项目,再由 vs 编译生成而得
参考文章:http://t.csdnimg.cn/zQP57
在 windows 环境下,在根目录使用下列命令,会默认生成 Visual Studio
项目工程文件
cmake . |
此时的项目结构变成了
03cmake | |
├─ .vscode | |
│ ├─ c_cpp_properties.json | |
│ └─ tasks.json | |
├─ 03make.vcxproj | |
├─ 03make.vcxproj.filters | |
├─ add.cpp | |
├─ ALL_BUILD.vcxproj | |
├─ ALL_BUILD.vcxproj.filters | |
├─ CMakeCache.txt | |
├─ CMakeFiles | |
│ ├─ 3.29.0-rc4 | |
│ │ ├─ CMakeCCompiler.cmake | |
│ │ ├─ CMakeCXXCompiler.cmake | |
│ │ ├─ CMakeDetermineCompilerABI_C.bin | |
│ │ ├─ CMakeDetermineCompilerABI_CXX.bin | |
│ │ ├─ CMakeRCCompiler.cmake | |
│ │ ├─ CMakeSystem.cmake | |
│ │ ├─ CompilerIdC | |
│ │ │ ├─ CMakeCCompilerId.c | |
│ │ │ ├─ CompilerIdC.exe | |
│ │ │ ├─ CompilerIdC.vcxproj | |
│ │ │ ├─ Debug | |
│ │ │ │ ├─ CMakeCCompilerId.obj | |
│ │ │ │ ├─ CompilerIdC.exe.recipe | |
│ │ │ │ └─ CompilerIdC.tlog | |
│ │ │ │ ├─ CL.command.1.tlog | |
│ │ │ │ ├─ CL.read.1.tlog | |
│ │ │ │ ├─ CL.write.1.tlog | |
│ │ │ │ ├─ CompilerIdC.lastbuildstate | |
│ │ │ │ ├─ link.command.1.tlog | |
│ │ │ │ ├─ link.read.1.tlog | |
│ │ │ │ └─ link.write.1.tlog | |
│ │ │ └─ tmp | |
│ │ ├─ CompilerIdCXX | |
│ │ │ ├─ CMakeCXXCompilerId.cpp | |
│ │ │ ├─ CompilerIdCXX.exe | |
│ │ │ ├─ CompilerIdCXX.vcxproj | |
│ │ │ ├─ Debug | |
│ │ │ │ ├─ CMakeCXXCompilerId.obj | |
│ │ │ │ ├─ CompilerIdCXX.exe.recipe | |
│ │ │ │ └─ CompilerIdCXX.tlog | |
│ │ │ │ ├─ CL.command.1.tlog | |
│ │ │ │ ├─ CL.read.1.tlog | |
│ │ │ │ ├─ CL.write.1.tlog | |
│ │ │ │ ├─ CompilerIdCXX.lastbuildstate | |
│ │ │ │ ├─ link.command.1.tlog | |
│ │ │ │ ├─ link.read.1.tlog | |
│ │ │ │ └─ link.write.1.tlog | |
│ │ │ └─ tmp | |
│ │ ├─ VCTargetsPath.txt | |
│ │ ├─ VCTargetsPath.vcxproj | |
│ │ └─ x64 | |
│ │ └─ Debug | |
│ │ ├─ VCTargetsPath.recipe | |
│ │ └─ VCTargetsPath.tlog | |
│ │ └─ VCTargetsPath.lastbuildstate | |
│ ├─ c1c397eb2ba1589aadad67e99cf541fa | |
│ │ └─ generate.stamp.rule | |
│ ├─ cmake.check_cache | |
│ ├─ CMakeConfigureLog.yaml | |
│ ├─ CMakeScratch | |
│ ├─ generate.stamp | |
│ ├─ generate.stamp.depend | |
│ ├─ generate.stamp.list | |
│ ├─ pkgRedirects | |
│ └─ TargetDirectories.txt | |
├─ CMakeLists.txt | |
├─ cmake_install.cmake | |
├─ demo.sln | |
├─ div.cpp | |
├─ head.h | |
├─ main.cpp | |
├─ mult.cpp | |
├─ README.md | |
├─ sub.cpp | |
├─ ZERO_CHECK.vcxproj | |
└─ ZERO_CHECK.vcxproj.filters |
你需要用 Visual Studio
来打开 .sln
项目文件,然后运行,才能够生成可执行程序。
生成成功,你可在项目根路径查看到 debug
目录,其中有个 03make.exe
(你自己在 CMakeLists.txt 设置名字)可执行程序
回到 Visual Studio
,将 03make
项目设为启动项目
点击本地 Windows 调试器即可
# 3.2 通过生成 makefiles 文件,再由 MinGW 编译而得
参考文章:http://t.csdnimg.cn/m9JqW
首先,先清理一下上面创建 vs 工程文件。由于之前使用直接在项目根目录使用 cmake 命令(即 cmake .
),因此所生成的 vs 工程文件,也会和原先的代码杂糅在一起。所以,只能够手动删除,保留源码和 CMakeLists.txt
。
至于如何高效的删除,请阅读这篇文章如何优雅的删除 Cmake 生成的文件?
以下是删除后的项目结构
03cmake | |
├─ .vscode | |
│ ├─ c_cpp_properties.json | |
│ └─ tasks.json | |
├─ add.cpp | |
├─ CMakeLists.txt | |
├─ div.cpp | |
├─ head.h | |
├─ main.cpp | |
├─ mult.cpp | |
├─ README.md | |
└─ sub.cpp |
在项目根目录输入以下命令
cmake -S ./ -B ./ -G "MinGW Makefiles" |
使用该命令可以直接生成 makefiles
文件
然后可以通过以下命令,在项目根目录中调用 MinGW
里面中 mingw32-make.exe
程序编译生成。(这里我重命名为了 make.exe
)
make |
即可在当前目录下,生成可执行文件 03make.exe
运行即可
.\03make.exe |