上篇说到使用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那样,什么都看不到,都是各有利弊吧。