在 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
我是新手,正在尝试创建一个我可以创建的 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