在使用Makefile运行程序时添加命令行参数,可以通过在Makefile的规则中指定参数传递的方式来实现。以下是一个基本的示例:
假设你有一个简单的C程序main.c
,它接受一个命令行参数并打印出来:
// main.c
#include <stdio.h>
int main(int argc, char *argv[]) {
if (argc > 1) {
printf("Received argument: %s\n", argv[1]);
} else {
printf("No arguments received.\n");
}
return 0;
}
你的Makefile可能看起来像这样:
# Makefile
CC = gcc
CFLAGS = -Wall -std=c99
TARGET = myprogram
all: $(TARGET)
$(TARGET): main.o
$(CC) $(CFLAGS) -o $@ $<
main.o: main.c
$(CC) $(CFLAGS) -c $<
clean:
rm -f $(TARGET) *.o
要在运行程序时添加命令行参数,你可以在Makefile的规则中使用变量来传递这些参数。例如,你可以定义一个变量ARGS
来存储命令行参数,并在运行目标程序时使用它:
# Makefile with ARGS
CC = gcc
CFLAGS = -Wall -std=c99
TARGET = myprogram
ARGS ?= default_argument # 默认参数
all: $(TARGET)
$(TARGET): main.o
$(CC) $(CFLAGS) -o $@ $<
main.o: main.c
$(CC) $(CFLAGS) -c $<
run: $(TARGET)
./$(TARGET) $(ARGS)
clean:
rm -f $(TARGET) *.o
在这个Makefile中,我们添加了一个新的目标run
,它依赖于$(TARGET)
(即你的程序)。当你执行make run
时,它会编译程序(如果需要的话),然后运行它,并传递ARGS
变量中的参数。
你可以通过命令行覆盖ARGS
变量的默认值,例如:
make run ARGS="my custom argument"
这将运行程序并传递"my custom argument"
作为命令行参数。
参考链接:
通过这种方式,你可以灵活地在Makefile中添加和修改命令行参数,而不需要每次都手动输入它们。
领取专属 10元无门槛券
手把手带您无忧上云