VSCode快速创建多目录多文件C项目
时间:2020-07-07 23:37:41
手机看文章
扫描二维码
随时随地手机看文章
[导读]点击上方蓝字关注我哦~ 01 前言 在VScode中如何像其它IDE一样快速创建如下图的项目文件树。 就自己写了个脚本,用于自动创建项目。 02 脚本介绍 # 输入一个文件名 $projectnameread projectname # 源文件目录Src="./Src" # 头文件目录Inc="./Inc" # 创建项目
点击上方蓝字关注我哦~
01
前言
在VScode中如何像其它IDE一样快速创建如下图的项目文件树。
就自己写了个脚本,用于自动创建项目。
02
脚本介绍
# 输入一个文件名 $projectname
read projectname
# 源文件目录
Src="./Src"
# 头文件目录
Inc="./Inc"
# 创建项目树
mkdir -p $Src $Inc ./Output/bin
# 创建makefile文件
touch makefile
# 创建 main.cpp文件
touch $Src/main.c
# 文件名小写转换
#declare -l lfilename=$projectname
lfilename="${projectname,,}"
# 源文件
c_file=$Src"/"${lfilename}".c"
# 头文件
h_file=$Inc"/"${lfilename}".h"
# 创建一对项目文件
touch $c_file $h_file
# 读取本机时间
time4=$(date "+%Y.%m.%d")
# 向main.c中写入内容
# 注释
echo "/***************************************************************************" $Src/main.c
echo "* Copyright (c) 2020~2021 XXXX" $Src/main.c
echo "* All rights reserved" $Src/main.c
echo "* " $Src/main.c
echo "* 文件名称:main.c" $Src/main.c
echo "* " $Src/main.c
echo "* 摘 要:主函数入口" $Src/main.c
echo "* " $Src/main.c
echo "* 创 建 者:xxxx" $Src/main.c
echo "* " $Src/main.c
echo "* 创建日期:"$time4 $Src/main.c
echo "* " $Src/main.c
echo "* 修改记录" $Src/main.c
echo "* 日期 修改者 版本 修改内容" $Src/main.c
echo "* --- ---- --- -------" $Src/main.c
echo "****************************************************************************/" $Src/main.c
# main
echo "#include <stdio.h> " $Src/main.c
echo "#include \"$lfilename.h\"" $Src/main.c
echo "" $Src/main.c
echo "" $Src/main.c
echo "" $Src/main.c
echo "int main()" $Src/main.c
echo "{" $Src/main.c
echo " printf(\"hello world\n\");" $Src/main.c
echo " test();" $Src/main.c
echo " return 0;" $Src/main.c
echo "}" $Src/main.c
# 向$lfilename.c中写入内容
# 注释
echo "/***************************************************************************" $Src/$lfilename.c
echo "* Copyright (c) 2020~2021 XXXX" $Src/$lfilename.c
echo "* All rights reserved" $Src/$lfilename.c
echo "* " $Src/$lfilename.c
echo "* 文件名称:$lfilename.c" $Src/$lfilename.c
echo "* " $Src/$lfilename.c
echo "* 摘 要:测试C文件" $Src/$lfilename.c
echo "* " $Src/$lfilename.c
echo "* 创 建 者:xxxx" $Src/$lfilename.c
echo "* " $Src/$lfilename.c
echo "* 创建日期:"$time4 $Src/$lfilename.c
echo "* " $Src/$lfilename.c
echo "* 修改记录" $Src/$lfilename.c
echo "* 日期 修改者 版本 修改内容" $Src/$lfilename.c
echo "* --- ---- --- -------" $Src/$lfilename.c
echo "****************************************************************************/" $Src/$lfilename.c
echo "#include \"$lfilename.h\"" $Src/$lfilename.c
echo "" $Src/$lfilename.c
echo "" $Src/$lfilename.c
echo "" $Src/$lfilename.c
echo "int test()" $Src/$lfilename.c
echo "{" $Src/$lfilename.c
echo " printf(\"hello Test\n\");" $Src/$lfilename.c
echo " return 0;" $Src/$lfilename.c
echo "}" $Src/$lfilename.c
# 向$lfilename.h中写入内容
# 注释
echo "/***************************************************************************" $Inc/$lfilename.h
echo "* Copyright (c) 2020~2021 XXXX" $Inc/$lfilename.h
echo "* All rights reserved" $Inc/$lfilename.h
echo "* " $Inc/$lfilename.h
echo "* 文件名称:$lfilename.h" $Inc/$lfilename.h
echo "* " $Inc/$lfilename.h
echo "* 摘 要:测试头文件" $Inc/$lfilename.h
echo "* " $Inc/$lfilename.h
echo "* 创 建 者:xxxx" $Inc/$lfilename.h
echo "* " $Inc/$lfilename.h
echo "* 创建日期:"$time4 $Inc/$lfilename.h
echo "* " $Inc/$lfilename.h
echo "* 修改记录" $Inc/$lfilename.h
echo "* 日期 修改者 版本 修改内容" $Inc/$lfilename.h
echo "* --- ---- --- -------" $Inc/$lfilename.h
echo "****************************************************************************/" $Inc/$lfilename.h
echo "/*防止重复引用 */" $Inc/$lfilename.h
echo "#ifndef "$projectname"_H" $Inc/$lfilename.h
echo "#define "$projectname"_H" $Inc/$lfilename.h
echo "" $Inc/$lfilename.h
echo "#include<stdio.h>" $Inc/$lfilename.h
echo "" $Inc/$lfilename.h
echo "//---------------------------------------------------------------------" $Inc/$lfilename.h
echo "//全局常量定义" $Inc/$lfilename.h
echo "//---------------------------------------------------------------------" $Inc/$lfilename.h
echo "" $Inc/$lfilename.h
echo "//---------------------------------------------------------------------" $Inc/$lfilename.h
echo "//全局类型定义" $Inc/$lfilename.h
echo "//---------------------------------------------------------------------" $Inc/$lfilename.h
echo "" $Inc/$lfilename.h
echo "//---------------------------------------------------------------------" $Inc/$lfilename.h
echo "//全局变量,可以被外部程序直接访问" $Inc/$lfilename.h
echo "//---------------------------------------------------------------------" $Inc/$lfilename.h
echo "" $Inc/$lfilename.h
echo "//---------------------------------------------------------------------" $Inc/$lfilename.h
echo "//公开的过程/函数" $Inc/$lfilename.h
echo "//---------------------------------------------------------------------" $Inc/$lfilename.h
echo "" $Inc/$lfilename.h
echo "int test();" $Inc/$lfilename.h
echo "#endif" $Inc/$lfilename.h
# 导入makefile
# cat "./makefile" >> ./makefile
echo "# C 项目 makefile文件" ./makefile
echo "" ./makefile
echo "# 头文件存放目录" ./makefile
echo "INC_DIR=./Inc" ./makefile
echo "" ./makefile
echo "# 可执行文件存放目录" ./makefile
echo "BIN_DIR=./Output/bin" ./makefile
echo "OUT_DIR=.\Output" ./makefile
echo "" ./makefile
echo "# 源文件存放目录" ./makefile
echo "SRC_DIR=./Src" ./makefile
echo "" ./makefile
echo "# 其它中间文件存放目录" ./makefile
echo "OBJ_DIR=./Output" ./makefile
echo "MainExt =.exe" ./makefile
echo "SourceExt =.c" ./makefile
echo "TargetExt =.o" ./makefile
echo "" ./makefile
echo "# 源文件列表" ./makefile
echo "SRC := \${wildcard \${SRC_DIR}/*.c}" ./makefile
echo "" ./makefile
echo "# obj文件列表" ./makefile
echo "OBJ := \${patsubst %.c, \$(OBJ_DIR)/%.o, \${notdir \${SRC}}}" ./makefile
echo "" ./makefile
echo "# 定义编译命令变量" ./makefile
echo "CC := gcc" ./makefile
echo "CFLAGS := -g -Wall -I\$(INC_DIR)" ./makefile
echo "" ./makefile
echo "# 定义可执行文件变量" ./makefile
echo "TARGET := \$(BIN_DIR)/main\$(MainExt)" ./makefile
echo "" ./makefile
echo "# 生成可执行文件" ./makefile
echo "\$(TARGET): \$(OBJ)" ./makefile
echo " \$(CC) \$(CFLAGS) -o \$@ \$^" ./makefile
echo "" ./makefile
echo "#生成链接文件" ./makefile
echo "\$(OBJ_DIR)/%.o: \$(SRC_DIR)/%.c" ./makefile
echo " \$(CC) \$(CFLAGS) -c -o \$@ \$<" ./makefile
echo "" ./makefile
echo "#clean规则" ./makefile
echo ".PHONY: clean" ./makefile
echo "clean:" ./makefile
echo " del \$(OUT_DIR)\bin\*.exe" ./makefile
echo " del \$(OUT_DIR)\*.o" ./makefile
脚本先从外部读取一个文件名,然后生成测试C文件和头文件,并生成main.c 和Makefile文件。windows下运行shell脚本需要安装git bash。
03
运行测试
运行脚本会弹出git bash对话框输入项目名TESTHELLO。回车等待创建完成
make编译下
运行可执行文件,输出符合预期。
看下编译后的目录文件树:
公众号回复“脚本” 获取本文资料。
/ The End /
推荐阅读
本文由【嵌入式案例Show】原创出品,未经许可,请勿转载
扫码关注我们
看更多嵌入式案例
免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!