我有一个名为main.c的程序和一个名为functions.h的头文件。 Main需要命令行参数,我不知道如何构建makefile,因此它将接受cmd行参数。
main.c:
#include <functions.h>
int main(char agrv[], int argc){.....}
makefile:
p1: main.o insertNode.o functions.h
gcc -c main.o insertNode.o -p1
main.o: main.c
gcc -c main.c
insertNode.o: insertNode.c
gcc -c insertNode.c
我需要输入命令行&#34; p1 inputfile.txt outputfile.txt&#34;我无法弄清楚
答案 0 :(得分:1)
以下makefile应该按照您的意愿执行。
OBJS := main.o insertNode.o
SRCS := main.c insertNode.c
HDRS := functions.h
.PHONY: all
all: p1 $(SRCS)
%.o:%.c
<tab>gcc -c $(CFLAGS) $< -o $@ -I.
p1: #(OBJS)
<tab>gcc $(OBJS) -o $@ $(LFLAGS)
将命令行参数传递给makefile,使用
make -f makefile -Dparm=value
然后在makefile中,parm
可以被$(parm)
引用,其内容将是value
输入
p1 inputfile.txt outputfile.txt
main.c文件需要类似于:
...
int main( int argc, char* argv[] )
{
if( 3 != argc )
{ // then invalid number of parameters
fprintf( stderr, "USAGE: %s <inputFileName> <outputFileName>\n". argv[0] );
exit( EXIT_FAILURE )
}
// implied else, correct number of command line parameters
// the input file name is pointed to by `argv[1]`
// the output file name is pointed to by `argv[2]`