2010-08-21 4 views
0

모두 잘하고 있습니다 희망얼룩 - Makefiles

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 

파일은 main.erl send.erl get.erl loops.erl

나는이 .exe

로 메이크업의 파일 형식을 저장

창문에

make [main] 
은 나를 이상한 팝업 오류가 제공

모든 쉘. make [main] 명령이 맞습니까? 내 실제 코드가 맞습니까? 도움을

감사합니다, 여기 -B

답변

6

몇 가지 오류 :

  1. 들여 쓰기 "ERL ="줄을 잘 작동하지 않습니다. 주요한 탭은 특별한 것이 있습니다. 다른 언어와 마찬가지로 서식을 완전히 자유롭게 사용할 수 없습니다.

  2. make 파일은 확장자가없는 Makefile으로 저장해야합니다. 사례는 귀하의 특정 "make"프로그램에 중요 할 수도 있고 중요하지 않을 수도 있습니다. 그러나 모든 버전의 make는 Makefile을 허용합니다.

  3. 명령 줄의 대괄호는 절대로 작동하지 않습니다. 나는 당신이 어딘가에서 잘라 붙여 넣기를하고 있다고 가정하지만, 대괄호를 포함하여 대체해야 할 예제 텍스트로 "[main]"을 사용했을 것입니다.

  4. 이 메이크 파일에 "main"대상이 없으므로 "make main"도 실패합니다. "make loops.beam"과 같은 몇 가지 암시 적 대상처럼 "make all", "make clean"및 "make compile"이 작동합니다.

    계속 사용하려면 make에 관한 책을 받아야합니다. O'Reilly의 Managing Projects with GNU Make, 3/e 메 클렌 버그 (Mecklenburg)는 무료 온라인 또는 죽은 나무 형태로 제공됩니다. GNU make 매뉴얼은 onlinedead trees으로도 제공됩니다.

  5. 그러나 여기에서는 전통적인 "make"를 사용하지 않아야합니다. 순수 Erlang 프로젝트의 경우 Emakefiles은 더 짧고 선명하며 전반적으로 더 좋습니다. Erlang 프로젝트와 함께 다른 것들을 빌드하기에는별로 좋지는 않지만 항상 둘 다 할 수 있습니다. Makefile은 Erlang 빌드를 시작하기 위해 "erl -make"를 사용하고 그 밖의 모든 것을 수행합니다.

+0

내가 응답을 주셔서 감사합니다,하지만 정말 내 질문에 대답하지 않았다 : (당신이 GNU이 확인 사용하는 경우)

나는 메이크업에 대한 자세한 내용은이 페이지를 추천합니다. 책을 읽는 데 필요한 간단한 메이크 파일을 작성하는 것이 정말 어렵습니까 ?? – BAR

+4

파일에 무엇이 잘못되었는지 질문했습니다. 그리고 네, Makefile은 주제에 관한 책을 원하기에 충분히 복잡합니다. 기술 도서가 나오면 제가 권장하는 것은 짧습니다. 또한 Makefile을 계속 사용하려면 단 한 권만 가져야한다는 단서를 지어 권 해드립니다. 이것이 우리가 볼 수있는 것보다 더 많은 것을 만드는 단발 거래라면 Emakefile을 대신 구축하십시오. 그러나 이것은 다른 질문이 될 것입니다.이 질문이 올바르게 대답되었는지 여부에 관계 없습니다. –

1

실제 코드는 다소 정확합니다. ERL로 시작하는 행의 들여 쓰기를 제거하고 모든 들여 쓰기 된 행의 처음에 TAB (SPACE가 아님) 행이 있는지 확인해야합니다. (Windows의 현지화 된 버전이 아니라면 관리자의 철자도 확인해야합니다.)

Makefile의 이름은 Makefile이어야하며 (파일 형식이 전혀없는) Make와 함께 실행해야합니다 . 커맨드 라인에서 make를 작성하면 맨 위의 make-command가 실행됩니다 (이 경우에는 'all').다른 명령 (또는 모두 명시 적으로)을 실행하려면 "make clean", "make foo.beam"과 같이 make 명령에 추가하십시오.

소스 파일을 src /와 ebin /에있는 컴파일 된 파일에 넣는 것도 Erlang 표준입니다. 그냥 날 잘못 알려, http://www.gnu.org/software/make/manual/make.html

관련 문제