下一个makefile从其命令行arg-ARGS接收要编译的文件。例如
使ARGS=“out.c”
我想用不包括后缀的变量ARGS替换创建的可执行文件“run”的名称
在本例中:run=“out”

all: Task1
Task1: outputs/output.o
	gcc -g -m32 -Wall -o run outputs/output.o

outputs/output.o: outputs/${ARGS}
	gcc -m32 -g -w -Wall -ansi -c -o outputs/output.o outputs/${ARGS}


.PHONY: clean
run: clean Task1
clean:
	rm -f outputs\output.o Task1

最佳答案

做你所要求的事情的简单方法是:

EXEC := $(basename $(ARGS))
all: Task1
Task1: outputs/output.o
    gcc -g -m32 -Wall -o $(EXEC) outputs/output.o

更好的方法是:
EXEC := $(basename $(ARGS))
all: $(EXEC)
$(EXEC): outputs/output.o
    gcc -g -m32 -Wall -o $(EXEC) outputs/output.o

更好的是:
EXEC := $(basename $(ARGS))
all: $(EXEC)
$(EXEC): outputs/output.o
    gcc -g -m32 -Wall -o $@ $^

关于c - makefile-如何从变量中排除文件扩展名后缀,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28617311/

10-11 15:39