希望每个人都做得很好
我在Windows上的erlang中遇到make文件有问题。我似乎无法使用以下代码。
.SUFFIXES: .erl .beam
.erl.beam:
erlc -W $<
ERL = erl -boot start_clean
MODS = main send get loops
all: compile
${ERL} -pa 'G:\Documents and Settings\Administrador' -s main start
compile: ${MODS:%=%.beam}
clean:
rm -rf *.beam erl_crash.dump
我想编译的文件是main.erl send.erl get.erl loops.erl
我将make文件保存为.exe
类型
make [main]
进入windows shell
它给我的一切都是一个奇怪的弹出错误。 make [main]
命令是否正确?
我的实际代码是对的吗?
感谢您的帮助, -B
答案 0 :(得分:6)
这里有几个错误:
缩进的“ERL =”行无法正常工作。领先的标签是特别的。与其他语言一样,您没有完全的格式化自由。
make文件应保存为Makefile
,不能包含扩展名。案件可能或可能不重要您的特定“制造”计划。但是,所有版本的make都接受Makefile
。
命令行中的括号将永远不会起作用。我假设你从某个地方剪切并粘贴它们,但它们可能使用“[main]”作为你应该替换的示例文本,包括括号。
“make main”也将失败,因为您在此Makefile中没有“主”目标。 “make all”,“make clean”和“make compile”将会起作用,就像“make loops.beam”这样的几个隐含目标一样。
如果你要继续使用它,你真的应该得到一本关于make的书。我喜欢梅克伦堡的O'Reilly's Managing Projects with GNU Make, 3/e,可以免费在线或以死树形式获得。 GNU make手册也可用online和dead trees。
但是,你可能不应该在这里使用传统的“make”。对于纯粹的Erlang项目,Emakefiles更短,更清晰,总体上更好。在Erlang项目中构建其他东西并不是很好,但是你总是可以做到这两点:Makefile使用“erl -make”来启动Erlang构建,并自己做其他事情。
答案 1 :(得分:1)
您的实际代码看起来或多或少是正确的。您应该删除以ERL开头的行的缩进,并确保所有缩进行在开头都有TAB(而不是SPACE)。 (除非您有Windows的本地化版本,否则还应检查管理员的拼写。)
Makefile的名称应该是Makefile(根本没有文件类型),你应该用make运行它。只需在命令行中编写make就会运行最顶层的make-command(在你的情况下是'all')。如果你想运行任何其他命令(或者所有其他命令),那么只需将它添加到make命令中,例如“make clean”,“make foo.beam”。
另外考虑将源文件放在src /中,将编译后的文件放在ebin /中,因为这是Erlang标准。
我推荐此页面以获取有关make的更多信息(如果您使用的是GNU Make):http://www.gnu.org/software/make/manual/make.html