现有如下文件夹:
main/
main.c MO1/ MO2/ MO3/
其中 MO1 MO2 MO3 分别是程序的一个模块,节构都是:
MO1/
mo1.c mo11.c mo12.c mo13.c
main.c 调用 mo1.c mo2.c mo3.c
mo1.c 又调用 mo11.c mo12.c mo13.c
暂不考虑参数传递等问题,应该如何编译呢?
你需要的是学习怎样写makefile。
如果你是伸手党,在根目录下创建一个文件名为makefile的文件,并按照下面的方法写:
#this is a makefile
objects = main.o mo1.o mo2.o mo3.o mo11.o mo12.o
compiler = gcc
main: $(objects)
$(compiler) -o main $(objects)
clean:
rm main *.o
然后你只要在terminal上输入make,就编译好了;如果输入make clean,则会清空编译出来的文件:
JerryMac:Dev Jerry$ make
cc -c -o main.o main.c
cc -c -o mo1.o mo1.c
cc -c -o mo2.o mo2.c
cc -c -o mo3.o mo3.c
cc -c -o mo11.o mo11.c
cc -c -o mo12.o mo12.c
gcc -o main main.o mo1.o mo2.o mo3.o mo11.o mo12.o
JerryMac:Dev Jerry$ make clean
rm main *.o
JerryMac:Dev Jerry$ ls
main.c mo1.c mo12.c mo3.c
makefile mo11.c mo2.c
如果你想要深究什么是makefile,上面那段makefile为什么这么写,以及如何写makefile。
我推荐你阅读:跟我一起写Makefile系列
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。