Windows机器下VSCode安装及使用CmakeLists编译工程demo
下载时,根据自己机器配置选择64位或32位(目前大多数机器windows机器都是64位),下载到本地之后如下图所示:
1.2 cmake下载
官网下载地址: https://cmake.org/download/
1.3 mingw下载
官网下载地址:https://osdn.net/projects/mingw/releases/
2 软件安装
安装完成之后打开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 */
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)