使用VS CODE测试nr_micro_shell

2023-05-16

上篇说到使用dev-c++来编译nr_micro_shell,整体还是很方便的,不要写任何命令和文件就能完成编译,但是dev-c++这个工具并不是很好用,今天使用VS CODE 加 Cmake来完成编译,

1准备条件

         安装 VS code  Visual Studio Code - Code Editing. Redefined

         在vs code中安装 cmake,这两个都要安装

        安装minGW  Downloads - MinGW-w64  这个就是编译器部分了,前面的都是编译功能,minGW安装好记得配置环境变量。

看到这里是不是觉得还是DEV -C++ IDE比较香,什么都不用配置,对于多文件,多文件夹的工程,我们必须要使用makefile或cmake来帮忙,单纯用gcc编译器是很累的。

 环境都搭建好之后,我们新建一个文件夹,使用vs code打开,里面手动添加main.c和CMakeLists.txt

main.c 和上篇保持基本一样

#include <stdio.h>
#include <stdlib.h>
#include "micro_shell/inc/nr_micro_shell.h"
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) 
{
	
	printf("hello\r\n");
	 /* 初始化 */
    shell_init();

    while(1)
    {
    	char c =getchar();
        
        {
            /* nr_micro_shell接收字符 */
            shell(c);
        }
    }
	
	
	return 0;
	
}

 CMakeLists.txt 

project(Main)
#设置c++编译器
set(CMAKE_CXX_COMPILER "gcc")
#include_directories(${CMAKE_CURRENT_SOURCE_DIR}/micro_shell/inc)
add_subdirectory(micro_shell)                          
add_executable(Main main.c)
target_link_libraries(Main micro_shell)

然后我们把上篇准备的那个micro_sheel文件夹放到工程里面,

 最后我们在micro_shell里面添加CMakeLists.txt

  CMakeLists.txt   生成一个micro_shell 静态库文件

#cmake_minimum_required(VERSION 2.8)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/inc)
add_library(micro_shell STATIC
  ./src/ansi.c
  ./src/ansi_port.c
  ./src/nr_micro_shell.c
  ./examples/nr_micro_shell_commands.c
)

 编译

         前面搞了一堆操作,终于可以编译了....

vs code 点击 运行->启动调试->选择我们安装的minGW,前提是设置过环境变量。报错的话不用管。

点击状态栏的编译和运行就可以编译通过了。

可以看到cmake给我生成了很多文件,都放到了build目录下面

也生成了我们想要的库文件,理论上这个文件可以用在win平台的其它程序中,只需要重新连接一下即可

 

使用vs code吧,怎么说呢,说实话还是挺麻烦了,需要自己安装不少东西, 也需要了解一些cmake的知识。不过这样也可以让我们了解一下编译的一些流程,不像ide那样,什么都看不到,都是各有利弊吧。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用VS CODE测试nr_micro_shell 的相关文章

  • git 别名中的 AWK 语句

    我正在尝试创建一个 git 别名来以特定格式打印日志中的所有拉取请求 但是 我在使用 AWK 删除双空格时遇到问题 这是使用以下命令的 git log 的输出 git log merges grep pull request pretty
  • shell脚本中的\r字符

    我在尝试执行 shell 脚本时收到以下错误 r command not found line 2 请提出同样的解决方案 以下是脚本中使用的初始行 bin sh if lt 1 then echo ERROR Environment arg
  • C程序调用shell脚本

    我有一个小型 C 程序 调用 shell 脚本 myScript sh 我得到的 ret 值为 256 请帮助我了解系统调用出了什么问题 int main int ret ret system myScript sh ret gt gt r
  • 在 iOS 模拟器中安装应用程序的脚本

    我正在尝试自动化构建应用程序 运行单元测试以及最终运行 UI 测试的过程 我正在通过命令行 xcodebuild sdk iphonesimulator6 0 在某个目录中构建应用程序 如何通过命令行 在 Library Applicati
  • shell-out 值到 md5(加密)函数

    我正在寻找一种解决方案 我正在构建 JSON 记录 并需要在 JQ 中生成一些文本 但将此文本通过管道传输到 MD5 求和函数并将其用作键的值 echo first John last Big jq id first last md5 通过
  • 是否可以创建一个脚本来保存和恢复权限?

    我正在使用 Linux 系统 需要对一组嵌套文件和目录进行一些权限实验 我想知道是否没有某种方法可以保存文件和目录的权限 而不保存文件本身 换句话说 我想保存权限 编辑一些文件 调整一些权限 然后将权限恢复到目录结构中 将更改的文件保留在适
  • sh / Bash shell 脚本中 !# (bang-pound) 的含义是什么?

    我想了解这个 Scala 脚本是如何工作的 usr bin env bash exec scala 0 object HelloWorld def main args Array String println Hello world arg
  • 如何使用 sed 将空格替换为 \(space)?

    当我使用 sed 将所有空格替换为 X 时 该命令有效 命令为 sed s X g filelist tmp 但是 当我尝试用 space 替换所有出现的空格时 代码是 sed s g filelist tmp 这不起作用 我究竟做错了什么
  • shell中如何从数组中随机选择一个项目

    我正在 Shell 脚本中创建一个机器人 Array with expressions expressions Ploink Poink I Need Oil Some Bytes are Missing Poink Poink Piiii
  • 调用 cat 时 shell 脚本挂起

    我有一个 shell 脚本 它通过电子邮件向我发送通过 crontasks 遇到的错误 如下所示 exec gt output cat shopt s nocasematch if output error output warning t
  • Bash 参数引号和 eval

    我编写了一个 bash 日志记录库 用我公司当前正在使用的一些复杂脚本来实现 在进行日志调用时 我一直致力于提供调用脚本的脚本文件名 BASH SOURCE 和行号 LINENO 但是 我不想依赖用户或实现脚本来将这两个变量作为参数传递 如
  • 如何在 C# 中启动文件

    编辑 我觉得自己像个白痴 我有一种感觉 像下面的答案会起作用 但没有看到任何与下面的答案类似的谷歌结果 所以当我看到这段复杂的代码时 我想它一定是这样的 我搜索并找到了这个Windows 列出并启动与扩展关联的应用程序 https stac
  • 如何在Shell脚本中解析字符串

    我想在 shell 脚本中解析以下字符串 VERSION 2 6 32 54 0 11 def 这里我想得到两个值 first 263254 second 11 我使用以下方法来获取第一个值 first expr substr VERSIO
  • 如何在 Makefile 中定义全局 shell 函数?

    我想定义一个shell函数 bin sh test do some complicated tests 1 2 if something then build thisway 1 2 else build otherway 1 2 fi 这
  • 无需 root 访问权限即可安装 zsh? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 有可能 以及如何 我确实需要在几台具有 ssh 访问权限 但没有 root 访问权限 的远程计算机上使用此功能 下载 zsh wget O zsh t
  • 如何使用 bash 中提供的工具生成一系列非周末日期?

    我想生成一个文件列表 其中名称包含 filename date 例如file 20111101 file 20120703 开始November 1 2011直到今天 应该不包括周末 Thanks 2011年试试这个 for y in 20
  • exec()、shell_exec()、curl_exec() 的安全漏洞

    有时 我会使用 exec shell exec 和curl exec 以下是典型用途 假设其中有 PHP 变量 即第一个变量中的 html 用户有可能修改其内容 从安全漏洞的角度来看 我应该关注什么 escapeshellcmd 和 esc
  • 在 bash 中,如何除以两个变量并输出四舍五入到小数点后 5 位的答案? [复制]

    这个问题在这里已经有答案了 我将两个变量作为输入 将它们相除后 我希望将输出四舍五入到小数点后 5 位 我已经尝试过这种方法 gt sum 12 n 7 output scale 5 sum n bc echo output 我的代码没有显
  • Bash 的源命令无法处理从互联网上卷曲的文件

    我正在尝试使用curl从互联网获取脚本文件 如下所示 source lt curl url echo done 我看到的是 完成 得到了回响before卷曲甚至开始下载文件 这是实际的命令和输出 bash 3 2 source lt cur
  • 在 Django shell 会话期间获取 SQL 查询计数

    有没有办法打印 Django ORM 在 Django shell 会话期间执行的原始 SQL 查询的数量 Django 调试工具栏已经提供了此类信息 例如 5 QUERIES in 5 83MS但如何从 shell 中获取它并不明显 您可

随机推荐

  • Week8 CSP-M2

    T1 HRZ的序列 题目 相较于咕咕东 xff0c 瑞神是个起早贪黑的好孩子 xff0c 今天早上瑞神起得很早 xff0c 刷B站时看到了一个序列aa xff0c 他对这个序列产生了浓厚的兴趣 他好奇是否存在一个数KK xff0c 使得一些
  • 如何在linux环境下启动时打开numlock

    如何在linux环境下启动时打开numlock 技巧管理员 2000 12 24 10 23 返回 转发 想在系统启动时自动打开NumLock xff0c 可以在 etc rc d rc local中加入以下内容 xff1a for t i
  • 【洛谷】每日一题-P1786 帮贡排序

    原题链接 P1786 帮贡排序 解析 实现方法 一看题 xff1a 这不就是道排序吗 xff1f 但是 用啥办法呢 xff1f 这自带的排序方法 xff0c 肯定是不能用了 那么我们就来写一个cmp排序函数吧 xff01 但是 输出排序呢
  • CCF 201609-3炉石传说 (100分)

    xff08 1 xff09 题目描述 xff08 2 xff09 算法思想 题目看起来很长 xff0c 但是只要玩过游戏阅读起来很容易理解 xff0c 充分理解后按照要求模拟即可没有什么难度 需要注意的一点就是从者的位置 xff0c 可以选
  • Mac Tesseract 4.1.1 样本训练超详细教程

    安装 Mac直接安装tesseract的话无法附带安装training tools 如果已经安装了没有training tools的tesseract xff0c 请先卸载 brew uninstall tesseract 先安装一些依赖的
  • 从 VHDX 文件恢复 (导入) WSL 2 安装

    Microsoft 官方以及常见的 WSL 导入导出方式 都是通过 wsl export 生成 tar 文件而使用 wsl import 命令完成导入 但是 有时候出于某些意外 比如系统出现严重问题需要重装 或者其他导致注册表丢失的情况 W
  • 企业发放的奖金根据利润提成。利润低于或等于100000元的,奖金可提10%; 利润高于100000元,低于200000元(100000<I≤200000)时,低于100000元的部分按10%提成,高于

    企业发放的奖金根据利润提成 利润低于或等于100000元的 xff0c 奖金可提10 利润高于100000元 xff0c 低于200000元 xff08 100000 lt I 200000 xff09 时 xff0c 低于100000元的
  • 用c语言实现辗转相除法(求两个数最大公因数的方法)

    首先解释辗转相除法的基本原理 假如有两个数a和b xff0c 也假设他们的最大公因数是c 那么a b都可以被c整除 xff0c 所以a和b之间必定相差c的整数倍 此时同理a b也是c的整数倍 接下来是解释这句话的 xff09 因为a b相当
  • nginx 日志解析

    Nginx是一个高性能的HTTP和反向代理服务器 Nginx access日志记录了web应用的访问记录 大致记录了访问方式 xff08 POST GET xff09 客户端IP 远程用户 请求时间 请求状态码 访问host地址 请求页面大
  • ContentObserver 内容改变到事件触发

    Setting 改变内容 PhoneWindowManager class SettingsObserver extends ContentObserver SettingsObserver Handler handler super ha
  • 【Python】错误:ModuleNotFoundError: No module named 'PIL'

    Python 错误 xff1a ModuleNotFoundError No module named PIL pycharm 错误 xff1a ModuleNotFoundError No module named PIL 导入模块 xf
  • IDEA设置自定义背景图

    IDEA是支持自定义背景图片的 今天在这里给大家分享一个超级简单的方法 第一步 打开idea的settings 在输入框搜索Set Background Image 第二步 右键Set Background Image选择第一个Add Ke
  • Jeston TX2-更换软件源

    1 备份原始的软件源 sudo cp etc apt sources list etc apt sources list back 2 更换软件源 输入 sudo gedit etc apt sources list 打开文件 xff0c
  • Win10安装Anaconda勾选添加环境变量后无法正常开机

    上文说到在安装Anaconda的时候 xff0c 有一步询问是否自动添加环境变量 xff0c 系统提示不推荐勾选 xff0c 但是笔者当时并不知道勾选了会出现什么样的问题 xff0c 所以尝试了一下 xff0c 勾选之后完成后面的安装 xf
  • Qt串口发送大量数据后无法接受和发送问题

    版本5 9 使用的qt官方库 xff0c 初始化什么的就不多介绍了 serialport 使用方式 xff0c 接收使用的槽函数 xff0c 如下 串口连接信号和槽 QObject connect amp qtCOM amp QSerial
  • QT使用QListWidget实现可拖拽列表

    使用自带的ListWidget控件 xff0c 实现简单 xff0c 就几行代码 xff0c 先看效果 xff1a 1 首先页面布局 xff0c 效果如下 1 1 添加一个listwidget 两个按钮 1 2 listwidget设置一下
  • 从0使用TCP手撸http服务器六

    html模板设计 xff1a 上篇我们说到通过路由去返回不同的html页面 xff0c 如果每一个页面都是一个数组的话 xff0c 那么我们可能需要很多数组 xff0c 里面很多内容都是一样的 xff0c 这样子会浪费我们单片机很多flas
  • 移植使用nr_micro_shell

    1 介绍 在使用linux和win系统的时候大家看到命令行也是很熟悉的了 xff0c 大家的第一个hello程序应该都是控制台程序 xff0c 在系统层面我们可以使用命令行操作我们的pc xff0c 那么在单片机里面通过串口怎么用命令操作单
  • 字符串——C++拼接多个字符串

    拼接多个字符串在C 43 43 的可以通过strcpy s 和srtcat s实现 xff0c 如 xff1a span class token keyword int span span class token function main
  • 使用VS CODE测试nr_micro_shell

    上篇说到使用dev c 43 43 来编译nr micro shell xff0c 整体还是很方便的 xff0c 不要写任何命令和文件就能完成编译 xff0c 但是dev c 43 43 这个工具并不是很好用 xff0c 今天使用VS CO