带命令行参数的Makefile

时间:2016-02-15 01:34:30

标签: c makefile

我有一个名为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;我无法弄清楚

1 个答案:

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