我想知道一种编译使用许多文件的程序的好方法,并且我想避免重新编译未修改的文件。
它适用于 Linux,我正在寻找与 Makefile 不同的东西。
Makefile 有一些问题:
写起来很长,只要我创建新文件就可以更改; C/C++使用头文件。
如果 .c 文件包含一个 .h 文件,而该 .h 文件包含另一个已修改的 .h 文件,则 Makefile 不会重新编译该文件。它需要复杂的语法。
Makefile使用制表符,不好,因为我用tab键缩进(它插入了4个空格字符)。
举个例子,我原来的编译脚本是:
gcc file1.c -c -flags1
gcc file2.c -c -flags2
gcc file3.c file4.c -c -flags3
gcc file1.o file2.o file3.o file4.o -o a.out
我想避免用简单的方法重新编译不需要的东西。
最佳答案
更新:这篇文章中提到的 Make 教程已不存在,这是一个非常好的介绍,真是太可惜了。
Makefiles 可以是无缝的,你可以让它纯粹根据项目目录中的文件自动编译你的项目。看这个Make Tutorial .完成该教程后,您将学会创建动态 Makefile 脚本,这些脚本仅编译已修改的内容,并遵循依赖关系树。
但如果您想进一步了解魔法,请查看 DevKitPro makefiles,他们甚至使用我只能假定是使用 grep 来弄清楚header dependencies。随意为您自己的项目修改它。
关于编译脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8691896/