嘿所以我是C的新手,但总的来说是一名中级程序员。我正在寻找制作文件并解决问题的确切问题,以及如何使用它们。例如,我正在通过键入以下内容单独编译项目中的每个文件:
gcc -o newoutfilename1.out oldcfilename1.c
gcc -o newoutfilename2.out oldcfilename2.c
现在如果我只是想运行一个make文件来一次编译它们。我不想把它们全部放在一个文件中,看看它们是如何没有链接的。也更进步。可以使用makefile进行测试。就像我编译到newoutfilename1.out
之后我想要运行:
./newoutfilename1.out arg1 arg2 arg3 > intothisfile.data
如果代码编译和输出正确的数据,通常在编码和测试时让我的生活更轻松。
答案 0 :(得分:3)
Interwebs上有几个GNU Make教程。谷歌出现了一些点击率。您可以从this one开始。
答案 1 :(得分:3)
好吧,
你给的那个链接,凯琳,你是否愿意阅读它?
老实说,如果我没有在我的直播中写下几个100个制作文件,我就不会理解你所链接的那个帖子中的一个单词。
makefile是一种特殊的脚本。
每一行都是这样的:
target: depends-on.c and.h and-even-another.h
command -o target depends-on.c
第一行是所有文件,第二行是在“:”之前创建文件的命令
文件也是如此。如果target比'depends-on.c'或'and.h'或'and-even-another.h'旧,则执行第二行中的命令(假设它将创建/重新生成/输出文件'target '),通常这些文件称为target.o,如果从源文件编译。
换句话说:一行描述输出是什么,冒号后输出所依赖的文件,第二行是创建输出的命令。
':'左边的东西叫做'目标'。
目标可能取决于其他目标。
您可以使用通配符。
*.o: *.c
cc -o "something you have to look up, dont now it from my mind ;D"
program: *.o
ln *.o my.lib another.lib
以上只编译那些比相应的* .o文件更新的* .c文件,然后将所有* .o文件与两个命名库链接在一起。
如果你在linux / unix机器上试试“man make”。否则谷歌; D
安吉洛