简单的make文件问题(C)

时间:2010-10-26 00:51:02

标签: c makefile

嘿所以我是C的新手,但总的来说是一名中级程序员。我正在寻找制作文件并解决问题的确切问题,以及如何使用它们。例如,我正在通过键入以下内容单独编译项目中的每个文件:

gcc -o newoutfilename1.out oldcfilename1.c
gcc -o newoutfilename2.out oldcfilename2.c

现在如果我只是想运行一个make文件来一次编译它们。我不想把它们全部放在一个文件中,看看它们是如何没有链接的。也更进步。可以使用makefile进行测试。就像我编译到newoutfilename1.out之后我想要运行:

./newoutfilename1.out arg1 arg2 arg3 > intothisfile.data

如果代码编译和输出正确的数据,通常在编码和测试时让我的生活更轻松。

2 个答案:

答案 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

安吉洛