使用VSCode, Mingw and Cmake写工程代码,从零开始写的那种,全过程分享......

你若发现该帖中有待商榷的地方,还请指正赐教,先行拜谢了!

1 软件下载

1.1 vscode下载

官网下载地址: https://code.visualstudio.com/

下载时,根据自己机器配置选择64位或32位(目前大多数机器windows机器都是64位),下载到本地之后如下图所示:

1.2 cmake下载

官网下载地址: https://cmake.org/download/

1.3 mingw下载

官网下载地址:https://osdn.net/projects/mingw/releases/

2 软件安装

2.1 VSCode安装

双击.exe文件开始安装,根据自己实际情况修改安装目录,其他全部默认点击“下一步”即可

安装完成之后打开vscode

2.2 添加cmake环境变量

(1)此电脑右击,点击属性

(2)点击高级系统设置

(3)点击高级 --> 环境变量

(4)选择Path,点击编辑

(5)将下载解压后的cmake bin目录路径粘贴进去,然后一路点击确定关闭弹窗即可

2.3 添加mingw环境变量

找到mingw的bin目录复制,添加方法参考 2.2 添加cmake环境变量

2.4 所有软件安装ok之后,重启一下电脑(不知道什么原因,没重启之前,配置cmake一直失败,重启后解决

在cmd窗口中敲 gcc --version和cmake --version命令行,有版本号回显说明安装欧ok

3 建工程demo

3.1 创建工程

按照以下文件,建立一个空的工程demo,里面啥也不用写

------------------------------------------------------------------------------------------------------------------------------------------------

3.2 用VSCode打开

打开后如下图所示

完成c码编写......

3.3 CmakeLists.txt编码

多级目录的CmakeLists.txt编写,代码层级关系如下:

(1)顶层CmakLists.txt

 1 #指定cmake最低版本号
2 cmake_minimum_required(VERSION 3.0)
3
4 #指定项目名称
5 project(CmakeProjDemo)
6
7 #指定可执行文件的输出路径位bin目录
8 set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)
9
10 #指定子目录
11 add_subdirectory(src)
12 #-----------------------以上是顶层目录的必需品-----------------
13
14
15 #main.c中#include "Pub.h" & #include "Calculator.h",需要指定include目录
16 include_directories(${CMAKE_SOURCE_DIR}/include) #没有这一行肯定报错找不到Pub.h & Calculator.h
17
18 #指定源文件编译成CmakeProjDemo
19 add_executable(CmakeProjDemo main.c)
20
21 #编译可执行文件时,main.c需要指定他的动态链接目录
22 target_link_libraries(CmakeProjDemo src) #放在add_executable(CmakeProjDemo main.c)之前为啥不行?

(2)./src/CmakLists.txt

 1 #该目录记为module_src
2 set(module_src src)
3
4 #当前目录下所有的源文件赋给source_src
5 aux_source_directory(. source_src)
6
7 #指定src目录下源文件 #include "Pub.h" & #include "Calculator.h"
8 include_directories(${CMAKE_SOURCE_DIR}/include) #没有这一行肯定报错找不到Pub.h & Calculator.h
9
10 #编译静态库
11 add_library(${module_src} ${source_src})

4 编译/运行

4.1 配置cmake

在VSCode中按F1 --> 窗口中输入cmake config --> 点击CMake Configure

4.2 编译

在VSCode中按F1 --> 窗口中输入cmake build --> 点击CMake Build

4.3 run

菜单栏 --> 终端 --> 新建终端 --> 在终端中cd 到bin目录 --> ./CmakeProjDemo.exe

5 源码附录

5.1 顶层目录:CmakeLists.txt main.c

 1 #/* 顶层CmakeLists.txt */
2 #指定cmake最低版本号
3 cmake_minimum_required(VERSION 3.0)
4
5 #指定项目名称
6 project(CmakeProjDemo)
7
8 #指定可执行文件的输出路径位bin目录
9 set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)
10
11 #指定子目录
12 add_subdirectory(src)
13 #-----------------------以上是顶层目录的必需品-----------------
14
15
16 #main.c中#include "Pub.h" & #include "Calculator.h",需要指定include目录
17 include_directories(${CMAKE_SOURCE_DIR}/include) #没有这一行肯定报错找不到Pub.h & Calculator.h
18
19 #指定源文件编译成CmakeProjDemo
20 add_executable(CmakeProjDemo main.c)
21
22 #编译可执行文件时,main.c需要指定他的动态链接目录
23 target_link_libraries(CmakeProjDemo src) #放在add_executable(CmakeProjDemo main.c)之前为啥不行?
 1 /* main.c */
2 #include <stdio.h>
3
4 #include "Pub.h"
5 #include "Calculator.h"
6
7 int main()
8 {
9 printf("Hello CMAKE_PROJ_DEMO.\n");
10
11 int num1 = 100;
12 int num2 = 10;
13
14 int ret = Add(num1, num2);
15 printf("Add result(%d, %d) = %d\n", num1, num2, ret);
16 printf("Subtract result(%d, %d) = %d\n", num1, num2, Subtract(num1, num2));
17 printf("Multiply result(%d, %d) = %d\n", num1, num2, Multiply(num1, num2));
18 printf("Divede result(%d, %d) = %d\n", num1, num2, Divide(num1, num2));
19
20 (void)Swap(&num1, &num2);
21 printf("Swap result(%d, %d)\n", num1, num2);
22
23 return 0;
24 }

5.2 src目录:CmakeLists.txt Pub.c Calculator.c

 1 #/* src目录CmakeLists.txt */
2 #该目录记为module_src
3 set(module_src src)
4
5 #当前目录下所有的源文件赋给source_src
6 aux_source_directory(. source_src)
7
8 #指定src目录下源文件 #include "Pub.h" & #include "Calculator.h"
9 include_directories(${CMAKE_SOURCE_DIR}/include) #没有这一行肯定报错找不到Pub.h & Calculator.h
10
11 #编译动态库
12 add_library(${module_src} ${source_src})
 1 /* Pub.c */
2 #include "Pub.h"
3
4 int Cmp(const void *num1, const void *num2)
5 {
6 return *(int *)num1 - *(int *)num2;
7 }
8
9 int Swap(int *const num1, int *const num2)
10 {
11 int tmp = *num2;
12 *num2 = *num1;
13 *num1 = tmp;
14
15 return 0;
16 }
 1 /* Calculator.c */
2 #include "Calculator.h"
3
4 #include <stdio.h>
5
6 int Add(const int num1, const int num2)
7 {
8 return num1 + num2;
9 }
10
11 int Subtract(const int num1, const int num2)
12 {
13 return num1 - num2;
14 }
15
16 int Multiply(const int num1, const int num2)
17 {
18 return num1 * num2;
19 }
20
21 int Divide(const int num1, const int num2)
22 {
23 return num1 / num2;
24 }

5.3 include目录:Pub.h Calculator.h

1 /* Pub.h */
2 #ifndef PUB_H
3 #define PUB_H
4
5 int Cmp(const void *num1, const void *num2);
6 int Swap(int *const num1, int *const num2);
7
8 #endif /* PUB_H */
 1 /* Calculator.h */
2 #ifndef CALCULATOR_H
3 #define CALCULATOR_H
4
5 int Add(const int num1, const int num2);
6 int Subtract(const int num1, const int num2);
7 int Multiply(const int num1, const int num2);
8 int Divide(const int num1, const int num2);
9
10 #endif /* CALCULATOR_H */

最新文章

  1. Scala 包
  2. Learning Spark 第四章——键值对处理
  3. 对接第三方支付接口-获取http中的返回参数
  4. ui-router带参数的路由配置
  5. Matlab中reshape函数的使用
  6. linux设备驱动归纳总结(八):4.总线热插拔【转】
  7. Sqli-labs less 15
  8. poj 2029 二维树状数组
  9. 服务器发布MVC常见问题解决方案
  10. openssl 生成CSR
  11. 杭电oj 1009 FatMouse&#39; Trade
  12. 在Linux服务器上增加硬盘没那么简单【转】
  13. iOS多线程--深度解析
  14. 英式英语VS美式英语
  15. C#理解AutoResetEvent和ManualResetEvent
  16. fft的实现
  17. objective-c启用ARC时的内存管理 (循环引用)
  18. Qt之QLocalServer
  19. git常用命令,冲突
  20. Week6&amp;7——第一次项目冲刺(Alpha版本)

热门文章

  1. Exchange 2019中的Unified Messaging(UM)
  2. Windows 10无法显示无线网络连接
  3. JS 模块化 - 02 Common JS 模块化规范
  4. C++ &quot;链链&quot;不忘@必有回响之双向链表
  5. Traefik2.X 版本 中 URL Rewrite 的使用
  6. 在k8s集群中安装rook-ceph 1.8版本步骤
  7. ATT&amp;CK系列一 知识点总结
  8. ​打造企业自己代码规范IDEA插件(上)
  9. Python抖音视频去水印,并打包成exe可执行文件
  10. acwing346 走廊泼水节 (最小生成树)