Erlang-makefile

Erlang-makefile,erlang,makefile,Erlang,Makefile,希望大家都做得很好 我在windows上的erlang中生成文件时遇到问题。我似乎无法使以下代码正常工作 .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

希望大家都做得很好

我在windows上的erlang中生成文件时遇到问题。我似乎无法使以下代码正常工作

.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
进入windows外壳

它给我的只是一个wierd弹出错误。make[main]命令正确吗? 我的实际代码正确吗

谢谢你的帮助, -B这里有几个错误:

缩进的ERL=行无法正常工作。前导标签是专门制作的。与其他一些语言一样,您没有完全的格式自由

make文件应另存为Makefile,无扩展名。案例可能对您的特定make程序有影响,也可能无影响。但是,所有版本的make都接受Makefile

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

makemain也将失败,因为您在此Makefile中没有主目标。makeall、makeclean和makecompile都可以工作,几个隐式目标也可以工作,比如makeloops.beam

如果你想继续使用的话,你真的应该买一本关于make的书。我喜欢Mecklenburg的O'Reilly's,可以在网上免费获得,也可以是dead tree的形式。GNU make手册也可根据需要提供

然而,您可能不应该在这里使用传统制造。对于纯Erlang项目来说,它们更简短、更清晰,而且总体上更好。它们不太适合在Erlang项目旁构建其他东西,但您始终可以同时做到这两件事:Makefile使用erl-make启动Erlang构建,其他一切都由它自己完成


您的实际代码看起来或多或少是正确的。您应该删除以ERL开头的行的缩进,并确保所有缩进行的开头都没有制表符空格。除非您有本地化版本的Windows,否则还应检查Administrator的拼写

Makefile的名称应该是Makefile,没有任何文件类型结尾,并且应该使用make运行它。只要在命令行中写入make,就会运行最顶层的make命令,在您的情况下,它是“all”。如果要显式运行任何其他命令或所有命令,只需将其添加到make命令中,如make clean、make foo.beam

还考虑将源文件放在SRC/编译文件中,因为这是Erlang标准。


如果您正在使用GNU make,我建议您在本页上查看有关make的更多信息:

我感谢您的回复,但它确实没有回答我的问题,请告诉我出了什么问题。写一个简单的makefile真的那么难吗?我需要读一本书??你问你的文件出了什么问题,我告诉过你。是的,Makefiles非常复杂,你需要一本关于这个主题的书。我推荐的是一本简短的技术书籍。还要注意的是,我推荐这本书时附带了一条但书,说只有在继续使用Makefiles的情况下才应该得到这本书。如果这是一个一次性交易,只需构建一个Emakefile即可。但这将是一个不同的问题,与这个问题的答案是否正确无关。
make [main]