2010-08-21 27 views
0

希望大家都做得很好Erlang - Makefiles

我在使用erlang製作windows文件時出現問題。我似乎無法得到下面的代碼工作。

.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

我保存生成文件爲一個.exe

而且類型

make [main] 

進入windows外殼

它給我的是一個奇怪的彈出錯誤。 make [main]命令是否正確? 而且我的實際代碼正確嗎?

感謝您的幫助, -B

回答

6

一些錯誤的位置:

  1. 縮進 「ERL =」 行不工作的權利。領先的標籤是特別製作的。與其他一些語言一樣,您沒有完全的格式化自由。

  2. make文件應該保存爲Makefile,沒有擴展名。大小寫可能與您的特定「make」程序無關。然而,所有版本的make都接受Makefile

  3. 命令行中的方括號將無法工作。我假設你是從某處剪切粘貼的,但他們可能使用「[main]」作爲你應該替換的示例文本,包括括號。

  4. 「make main」也會失敗,因爲在這個Makefile中沒有「main」目標。 「make all」,「make clean」和「make compile」將起作用,就像幾個隱含目標一樣,比如「make loops.beam」。

    如果你要繼續使用它,你真的應該得到一本關於make的書。我喜歡Mecklenburg的O'Reilly's Managing Projects with GNU Make, 3/e,可免費在線或以死樹的形式提供。 GNU make手冊也可用onlinedead trees

  5. 但是,您可能不應該在這裏使用傳統的「make」。對於純Erlang項目,Emakefiles更短,更清晰,總體上更好。他們不太適合在Erlang項目中構建其他東西,但您始終可以這樣做:Makefile使用「erl -make」來啓動Erlang構建,並自行完成其他任何事情。

+0

我欣賞的響應,但它確實沒有回答我的問題,只是讓我知道什麼是錯。寫一個簡單的makefile讓我閱讀一本書真的很難嗎? – BAR 2010-08-23 02:59:13

+4

你問我的文件有什麼問題,我告訴過你。是的,Makefiles非常複雜,您希望有一本關於該主題的書。隨着技術書籍的推出,我推薦的一篇很短。另外請注意,我推薦它有一個附帶條件,如果你要繼續使用Makefiles,你應該只能得到這本書。如果這是一次性交易,只能建立一個Emakefile。但那將是一個不同的問題,與這個問題是否被正確回答無關。 – 2010-08-23 03:14:13

1

您的實際代碼看起來或多或少正確。您應該刪除以ERL開頭的行的縮進,並確保所有縮進的行在開始時都有TAB(不是空格)。 (除非你有Windows的本地化版本,否則你應該檢查管理員的拼寫。)

你的Makefile的名字應該是Makefile(沒有任何文件類型),你應該使用make 。只要在命令行寫入make就會運行最上面的make-command(在你的情況下是'all')。如果你想運行任何其他命令(或全部顯式),那麼只需將它添加到make命令中,如「make clean」,「make foo.beam」。

還可以考慮將源文件放在src /和你的編譯文件中,因爲這是Erlang標準。

我建議這個頁面,瞭解作出進一步的信息(如果你使用GNU製作):http://www.gnu.org/software/make/manual/make.html