gpt4 book ai didi

c - 带有命令行参数的 Makefile

转载 作者:行者123 更新时间:2023-11-30 20:12:27 25 4
gpt4 key购买 nike

我有一个名为main.c 的程序和一个名为functions.h 的 header 。 Main 需要命令行参数,但我不知道如何构建 makefile,以便它接受命令行参数。

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

我需要在命令行中输入“p1 inputfile.txt outputfile.txt”,但我无法弄清楚

最佳答案

以下 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]`

关于c - 带有命令行参数的 Makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35400248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com