编译脚本

标签 c linux compilation automation

我想知道一种编译使用许多文件的程序的好方法,并且我想避免重新编译未修改的文件。

它适用于 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/

相关文章:

c - 为什么我总是覆盖链接列表中指向的内容?

regex - 带有输入和输出文件的单个重复命令

c - Linux 堆结构和 malloc() 和 free() 的行为

我可以编译一个依赖库的 C 程序,但是这个库不是 .h 文件,而是一个二进制文件,因为它是先编译的?

c - scanf 没有正确保存值

c - 我给 C 文件起什么名字重要吗?

c# - 在 Medium Trust 中编译代码

c - 枚举存储在哪里?

c - 如何使用 2 个应用程序同时连接两个智能卡读卡器

linux - 从 pgrep 获取单个 PID