0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在Windows系统中使用VSCode来进行开发和编译

IOT物联网小镇 来源:IOT物联网小镇 作者:道哥 2022-11-21 09:42 次阅读

这篇文章提供了一个简洁易懂的 cmake 工程模板,可以满足一个小团队的合作开发,无论是在代码安全性,还是开发效率上,都能满足基本的开发需求。

本文详细描述了文件结构和操作流程,如何在Linux系统使用命令行来编译,如何在Windows系统中使用VSCode 和Visual Studio 2019来进行开发和编译。

使用这个cmake模板之后,代码的结构非常的清晰,编译过程中产生的中间文件也不会污染源代码。

无论是开发一些个人项目,或者是在一些小团队中使用是绰绰有余了。

示例代码中核心的两个文件就是:app.cmake和lib.cmake,几乎每一行都有注释。

文末有下载链接。

文件目录说明

在团队开发工作中,每个人负责不同的模块。

从代码保密的角度看,除了项目负责人(或者说项目整合人员)有权限获取一个项目中的所有代码之外,每个开发者通常只拥有自己负责的模块。

每个开发者在编译自己的模块时,需要把输出文件(头文件、库文件、文档)等,汇总到一个中央仓库中,方便整合人员进行集成编译。

因此,示例代码如下图所示:

1db22812-692f-11ed-8abf-dac502259ad0.png

CMakeLists.txt:是最外层的 cmake 文件;

install:是所有模块编译结果的安装目录,便于项目整合人员集成编译;

myapp:是一个可执行程序的模板;

mymath:是一个动态链接库的模板;

再来看一下mymath内部的文件组织结构:

1dd3d192-692f-11ed-8abf-dac502259ad0.png

build:存放编译过程中产生的中间文件,不会污染源代码。当然了,如果使用 git 来进行版本管理,需要把这个目录添加到 .gitignore 文件中;

lib.cmake:比较重要的 cmake 文件,这个模板的核心价值就在这个文件中;

source:存放源代码,并且区分了 linux 和 windows 系统,在不同的系统上编译,会自动编译对应目录下的 C 文件;

include:存放头文件;

myapp目录内部结构与mymath几乎是一样的,这里就不赘述了。

这两个模块的编译结果会自动输出到install目录,如下图所示:

1df07fc2-692f-11ed-8abf-dac502259ad0.png

在install目录内:

include:汇总了所有模块的头文件;

library:汇总了所有模块输出的库文件;

bin:汇总了所有的可执行程序(一些单元测试程序根据自己的需要是否输出此目录);

操作:Linux系统下编译

编译动态库

删除install下所有文件和目录,得到一个干净的目录。

创建build目录,存放中间文件:

$ cd demo_cmakemymath
$ mkdir build

编译

$ cd build
$ cmake ..
$ make

成功编译后,在install目录里可以看到编译的输出结果:

demo_cmakeinstallincludemymathmymath.h
demo_cmakeinstalllibrarylinuxdebuglibmymath.so

编译可执行文件

$ cd demo_cmakemyapp
$ mkdir build
$ cd build
$ cmake ..
$ make

查看install目录下的输出结果:

demo_cmakeinstallinlinuxdebugmyapp

运行可执行程序

$ cd demo_cmakeinstallinlinuxdebug
$ ./myapp

执行结果如下图:

1e12d96e-692f-11ed-8abf-dac502259ad0.png

Windows系统中使用VSCode开发

创建MSVC工程

在VSCode IDE中,通过菜单【File】-【Open Folder】,打开文件夹demo_cmake。

因为demo_cmake目录下存在一个顶层CMakeLists.txt文件,所以VSCode侦测到之后会自动进行cmake配置,同时会创建目录build来存放所有的中间文件。

有些VSCode版本会跳出一个提示窗,让用户选择进行cmake配置,如下一步中所示。

执行cmake配置

可以同时按下:【ctrl】 + 【shift】 + 【p】,重新进行cmake配置:

1e2ed59c-692f-11ed-8abf-dac502259ad0.png

编译动态库

同时按下【shift】+【F7】,(或者按下VSCode最下方 【Build】右侧的编译目标),弹出窗口:

1e4c2624-692f-11ed-8abf-dac502259ad0.png

查看install目录中的输出文件:

demo_cmakeinstalllibrarywindowsdebugmymath.lib
demo_cmakeinstallinwindowsdebugmymath.dll

编译可执行程序

同时按下【shift】+【F7】,选择编译myapp。

查看install目录:

demo_cmakeinstallinwindowsdebugmyapp

双击运行可执行程序

1e66cefc-692f-11ed-8abf-dac502259ad0.png

Windows只用VS2019来开发

生成VS2019解决方案

打开命令行窗口: x64 Native Tools Command Prompt for VS 2019

> cd demo_cmake
> md build
> cd build
> cmake ..

输出如图:

1e7ce2fa-692f-11ed-8abf-dac502259ad0.png

使用VS2019编译动态库

此时,可以看到解决方案:demo_cmakeuilddemo_cmake.sln。

使用VS2019打开解决方案文件:

1e8fc7e4-692f-11ed-8abf-dac502259ad0.png

在工程mymath上单击右键,选择【重新生成】,在输出信息区可以看到生成了文件:

demo_cmakeinstalllibrarywindowsdebugmymath.lib
demo_cmakeinstallinwindowsdebugmymath.dll

编译可执行程序

在工程myapp上单击右键,选择【重新生成】。

在输出信息区可以看到生成了文件:

demo_cmakeinstallinwindowsdebugmyapp.exe

运行可执行程序

1ea8eb0c-692f-11ed-8abf-dac502259ad0.png
------ End ------

我们知道,在Windows平台上,VS2019只是一个IDE而已,它的底层是调用MSBuild来执行编译动作的。

MSBuild的角色与cmake非常类似,使用起来也比较方便,以后再总结一篇关于MSBuild的模板工程。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux系统
    +关注

    关注

    4

    文章

    593

    浏览量

    27387
  • Windows系统
    +关注

    关注

    0

    文章

    29

    浏览量

    9761
  • vscode
    +关注

    关注

    1

    文章

    155

    浏览量

    7692

原文标题:分享一个适合【团队】开发的cmake【跨平台】工程模板

文章出处:【微信号:IOT物联网小镇,微信公众号:IOT物联网小镇】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    没有CySecureTools模块,如何在Windows操作系统中使用mtb 3.2?

    没有 CySecureTools 模块,如何在 Windows 操作系统中使用 mtb 3.2? RDK3 devkit 需要此模块。
    发表于 05-31 07:35

    Windows上使用VScode进行编译LED例程下载,串口下载报错,如何切换芯片型号?

    Windows上使用VScode进行编译LED例程下载, 提示A fatal error occurred: This chip is ESP32-C3 not ESP32. Wro
    发表于 06-21 07:00

    何在VScode里面开发51程序?

    何在VScode里面开发51程序?
    发表于 10-21 07:05

    使用vscode进行开发

    Project设置项目名选择芯片类型这样新建项目完成使用vscode进行开发使用vscode替代Keil自然是因为Keil中没有代码补全
    发表于 01-10 06:12

    AN0130 AT32使用VSCode开发

    tasks.json脚本修改上图中框起来的路径需要根据实际路径进行修改。工程使用通过以上配置,现在可以使用VSCode开发编译、下载、调试AT32 MCU了。点击
    发表于 05-13 20:02

    Windows系统VSCode+pyOCD开发环境搭建步骤分享

    Git如果你的Windows系统上还没有Git,需要安装Git;如果已经有了,则可以跳过此步骤。当前最新版本下载链接安装过程比较容易,不再赘述。1.6 安装VSCode如果你的Windows
    发表于 12-15 15:31

    Windows上使用VScode进行编译LED例程下载,串口下载报错如何切换芯片型号?

    Windows上使用VScode进行编译LED例程下载,提示A fatal error occurred: This chip is ESP32-C3 not ESP32. Wron
    发表于 02-20 06:30

    何在ARM上使用Clang for Windows进行编译

    本指南介绍了LLVM12和相关Clang版本中的功能,这些功能有助于开发人员用于基于Arm的设备。特别是,本指南探讨了如何使用本机工具链进行编译适用于Windows on Arm(Wo
    发表于 08-08 06:56

    何在结构监测系统中使用基于memzo的压电矿车填补电力缺口

    本文档内容介绍了如何在结构监测系统中使用基于memzo的压电矿车填补电力缺口。
    发表于 09-17 10:34 1次下载
    如<b class='flag-5'>何在</b>结构监测<b class='flag-5'>系统</b><b class='flag-5'>中使</b>用基于memzo的压电矿车<b class='flag-5'>来</b>填补电力缺口

    何在MPLAB XC8集成开发环境中使编译器的详细概述

    本指南介绍的是在 MPLAB X 集成开发环境 (Integrated Development Environment, IDE)中使编译器;但您也可以从命令行中使用它。如果有
    发表于 06-07 09:28 29次下载
    如<b class='flag-5'>何在</b>MPLAB XC8集成<b class='flag-5'>开发</b>环境<b class='flag-5'>中使</b>用<b class='flag-5'>编译</b>器的详细概述

    何在Microsoft Visual Studio 2015中使用英特尔C++编译

    此视频演示了如何在Microsoft * Visual Studio 2015 *中使用英特尔®C++编译
    的头像 发表于 10-30 06:03 6910次阅读

    ESP32教程之如何在Windows系统上搭建开发环境

    本文档的主要内容详细介绍的是ESP32教程之如何在Windows系统上搭建开发环境。
    发表于 12-13 15:34 40次下载
    ESP32教程之如<b class='flag-5'>何在</b><b class='flag-5'>Windows</b><b class='flag-5'>系统</b>上搭建<b class='flag-5'>开发</b>环境

    VSCode搭建STM32单片机开发环境

    前言由于之前的学习过程中使用过了VSCode、Source Insight这类强大的代码编辑器,感觉实在是太好用了。但是最近自己要用到Keil进行STM32单片机的开发,因为使用过了
    发表于 11-13 11:06 15次下载
    <b class='flag-5'>VSCode</b>搭建STM32单片机<b class='flag-5'>开发</b>环境

    stm32cubeMX+vscode开发编译调试stm32程序

    stm32cubeMX+vscode开发编译调试stm32程序安装vscode安装make工具安装交叉编译工具链安装openocd安装cla
    发表于 12-24 19:31 6次下载
    stm32cubeMX+<b class='flag-5'>vscode</b><b class='flag-5'>开发</b><b class='flag-5'>编译</b>调试stm32程序

    何在vscode上面开发stm32

    vscode具有强大的代码编辑功能,自动补全代码,高亮代码看起来非常舒服,而Keil虽然也很强大,但是代码补全没有vsCode用起来舒服,如果能在vscode上面开发stm32将会非常
    的头像 发表于 10-08 16:32 2300次阅读