【发布时间】:2017-12-05 02:41:34
【问题描述】:
如果我有源代码文件main.c、library.c、library.h 等,我将如何将输入文本文件设置为像main input1.txt input2.txt 这样的控制台命令?这可以完全完成还是必须在编译后完成?
【问题讨论】:
标签: c gcc makefile compilation
如果我有源代码文件main.c、library.c、library.h 等,我将如何将输入文本文件设置为像main input1.txt input2.txt 这样的控制台命令?这可以完全完成还是必须在编译后完成?
【问题讨论】:
标签: c gcc makefile compilation
program: main.c library.c
gcc -o program $<
.PHONY: run
run: program input1.txt input2.txt.
./program input1.txt input2.txt
基本上,您将它们视为运行程序的依赖项。在上面的示例中,make run 将运行程序并在需要时对其进行编译。
【讨论】:
Makefile:3: *** missing separator. Stop. 尽管将空格更改为制表符,我还有什么做错了吗?
program目标的配方中使用$@而不是program是一种常见的做法,这样如果目标的名称你不需要更改配方已更改(正如您已经对 $< 所做的先决条件一样)。有关详细信息,请参阅gnu.org/software/make/manual/html_node/Automatic-Variables.html 中的可用自动变量
$^ 而不是 $<。