在 makefile 中指定文件名

specifying the filename in a makefile

我是新手,正在尝试创建一个我可以创建的 makefile,例如 运行:

make -f mymakefile testfile

并且 makefile 会找到 testfile.java(它存在于我 运行ning 所在的目录中),编译它,然后 运行 代码。

相反,我一定对自动变量的工作方式感到困惑,并且在工作了一个下午后我仍然得到错误:

make: Nothing to be done for `testfile'.

任何帮助将不胜感激,我的代码如下:

JC=javac
JVM=java
JFLAGS= -g
RM = rm -f
CFLAGS =
CXX = gcc
NAME = *
.SUFFIXES: .java .class

all: run

NAME: 
        $(CXX) $(CFLAGS) -o $^ $@
        echo $(NAME)

$(NAME).class: $(NAME)
        $(JC) $(JFLAGS) $(NAME).java

run: $(NAME).class
        $(JVM) $(NAME)

.PHONY: clean
clean:
        $(RM) $(NAME).class

我尝试让它回显 'testfile' 以更好地理解自动变量的工作原理,但我也无法使其正常工作。

make 命令行上的参数 select 要构建的目标。您不能像使用 shell 脚本那样将值传递给变量(就像您尝试使用 "NAME"。)

如果你真的想为变量传递一个值,命令是:

NAME=testfile make -f mymakefile