前言:
编写背景:最近重新开始拿起书本继续学习,因此避免不了敲打一些书本上的代码进行测试,从而达到进一步加深印象的目的。
编译大型的工程来说最适合使用makefile来编译,只需写好makefile文件,然后在命令行上敲make即可(小技巧:可以通过多核编译来提高效率 命令为make -j12)
makefile实现:(目前支持C++编译)
文件路径:头文件及源文件默认放在同一个路径下(可以自行修改),makefile编译完成后会生成可执行文件,可执行文件还需要自行运行。
#!/bin/bash
# version: v0.0.1
# author: guozh
# mailbox: 810170156@qq.com
# ======== makefile path =======
#源文件路径
CompliePath = ./
#可执行文件保存路径
SaveExecutableFilePath = ../bin/
#生成的可执行文件名字
ProjectName = test.exe
CHEADSOURCE = $(CompliePath)
BinPath = $(SaveExecutableFilePath)$(ProjectName)
# ==== code Complie style ======
SOURCE = $(wildcard $(CompliePath)*.cpp)
OBJECT = $(patsubst %.cpp, %.o, $(SOURCE))
CC = gcc
CPULS = g++
CFLAG = -Wall
CLDLIBRARY=
# =========== Build ============
all: Build Clean
Build:
$(CPULS) $(SOURCE) -c -I $(CHEADSOURCE)
$(CPULS) $(OBJECT) -o $(BinPath) $(CFLAG) $(CLDLIBRARY)
@echo "========== Build finish =========="
# =========== Clean ============
Clean:
rm -rf $(OBJECT)
@echo "========== Clean finish =========="
注: wildcard是展开./*.cpp所有.cpp文件,patsubst是将SOURCE里所有的.cpp后缀替换为.o
Shell实现:
总是敲打gcc xxx.c -o xxx麻烦,并且又要./xxx执行,于是就偷点懒用脚本来代替这个步骤:
v2.0.1
新添加一键编译debug并且进入debug调试(最好先安装gdb)
修复了第二个参数为空时,导致脚本错误的bug。
使用方法:
./make.sh 编译文件(必选) 参数(可选)
以下是脚本内容:
make.sh
#!/bin/bash
Translater=g++ //此处修改所使用的编译器gcc或g++
if [ $# -lt 1 ] ;then
echo "Please follow up file.c!"
echo "eg: ./make.sh xxx.c"
exit
fi
if [[ $2 = "debug" ]] ;then //编译并进入调试模式
FILE2=$1
NAME=${FILE2%.*}
${Translater} -g ${FILE2} -o ${NAME}
gdb ${NAME}
else //编译并直接运行
FILE1=$1
NAME=${FILE1%.*}
${Translater} ${FILE1} -o ${NAME}
if [ -r ${NAME} ] ;then
echo " test file is creature,Over! ";
./${NAME}
else
echo " Error!"
fi
fi
注:前提是程序需要编译的通过,如果要一键编译C++文件的话,则需要修改编译器gcc为g++。
写完后记得给权限chmod a+x make.sh即可,想直接make.sh就需要自己手动修改bash的环境变量咯。
本文介绍了如何利用makefile和shell脚本来自动化编译及执行当前目录下的C或C++源文件。对于大型工程,推荐使用makefile,只需一行`make -j12`即可多核编译。shell脚本则简化了单个文件的编译和运行过程,方便快捷。
2777





