我正在处理我的第一个项目,它将跨越多个 C 文件。对于我的前几个练习程序,我只是在 main.c
中编写代码并使用 gcc main.c -o main
进行编译。这在我学习时对我有用。
现在,我正在独自从事一个更大的项目。我想继续自己进行编译(或至少手动设置),这样我才能理解这个过程。阅读了一下之后,我决定制作一个 Makefile。
注意:我也在使用 GTK+,所以我不得不查找如何将它添加到编译命令中。
这是经过一些研究后的样子:
main:
gcc -Wall -g main.c -o main `pkg-config --cflags --libs gtk+-2.0`
起初,我只是在运行“make”。然后我遇到了一些问题,即使我已经更改了文件,也会出现错误“main is up to date”。
所以我写了一个脚本:
#!/bin/bash
rm main
make
./main
所以我进行更改,然后运行此脚本。
这是一个好的/正常的系统吗?我想要可扩展的系统,因为我的项目会增长。我假设我可以保留该脚本,只需将依赖项添加到 makefile 并更改 makefile 中的主要编译命令。我说得对吗?
提前致谢。
编辑:
感谢有关如何修复我的 Makefile 的反馈。
典型的编译过程也是如此 1) 输入 make
然后 2) ./main
不管项目是如何设置的或者它的大小(假设你已经写了一个正确的 makefile)?
最佳答案
你需要告诉 make main
依赖于 main.c
。这样,每次您对 main.c
进行更改然后运行 make
时,都会重新生成 main
。要删除 main
,您可以使用一个名为 clean
的虚假目标作为:
main:main.c
gcc -Wall -g main.c -o main `pkg-config --cflags --libs gtk+-2.0`
.PHONY: clean
clean:
rm -f main
现在要删除 main
你可以这样做:make clean
如果你得到 make: main is up to date.
这意味着你没有修改 main.c
因此不需要重新生成 main
。但是,如果您必须强制重新生成 main
,即使依赖项尚未更新,您也可以按照建议使用 make
的 -B
选项Sjoerd在其他答案中。
关于c - 什么是 C 的高效工作流程? - 生成文件 + bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3624200/