Erlang - Makefiles

时间:2010-08-21 05:10:58

标签: erlang makefile

希望每个人都做得很好

我在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

2 个答案:

答案 0 :(得分:6)

这里有几个错误:

  1. 缩进的“ERL =”行无法正常工作。领先的标签是特别的。与其他语言一样,您没有完全的格式化自由。

  2. make文件应保存为Makefile,不能包含扩展名。案件可能或可能不重要您的特定“制造”计划。但是,所有版本的make都接受Makefile

  3. 命令行中的括号将永远不会起作用。我假设你从某个地方剪切并粘贴它们,但它们可能使用“[main]”作为你应该替换的示例文本,包括括号。

  4. “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手册也可用onlinedead trees

  5. 但是,你可能不应该在这里使用传统的“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