2012-01-07 2 views
2

을 생산하면 내가 가지고있는 다음은 Makefile는 메이크 내부 조항하는 오류

#.SILENT: 
#.PHONY: 
SHELL  := /bin/bash 
################################################################ 
## Colordefinition 
################################################################ 
NO_COLOR = \x1b[0m 
OK_COLOR = \x1b[32;01m 
ERROR_COLOR = \x1b[31;01m 

%.pdf: %.tex 
    NAME=`basename $< .tex` ;\ 
    echo -e "\t$(OK_COLOR)Typesetting $$NAME$(NO_COLOR)" ;\ 
    pdflatex -draftmode -interaction=nonstopmode $< > /dev/null ;\ 
    if [ $$? = 0 ] ; then \ 
     echo -e "\t$(OK_COLOR)compilation in draftmode without erros$(NO_COLOR)" ;\ 
     pdflatex -interaction=nonstopmode $< > /dev/null ;\ 
     if [ -e $$NAME.glo ] ; then \ 
     echo -e "$(OK_COLOR)Typesetting $$NAME.glo$(NO_COLOR)" ;\ 
     makeindex -s gglo.ist -o $$NAME.gls $$NAME.glo ;\ 
     fi ;\ 
     if [ -e $$NAME.idx ] ; then \ 
     echo -e "$(OK_COLOR)Typesetting $$NAME.idx$(NO_COLOR)" ;\ 
     makeinde -s gind.ist $$NAME.idx ;\ 
     fi ;\ 
    else \ 
     echo -e "\t$(ERROR_COLOR)compilation in draftmode with erros$(NO_COLOR)" ;\ 
     exit 0;\ 
    fi ;\ 
    echo -e "\t$(OK_COLOR)Typesetting $$NAME finished $(NO_COLOR)" ;\ 

메이크 넣은 사람은 아니다 작업의 일부 나 오류를 찾을 수 없습니다.

make test.pdf 

다음의 예는 (test.tex 그러나)를 테스트하기 위해 사용할 수 있습니다 :

\documentclass{article} 
\begin{document} 
Hello World! 
\end{document} 

어떻게 메이크 개선해야한다

내 목표는 입력하는 것입니다?

+1

'make test.pdf '를 타이핑하는 것이 완벽하게 작동 할 것이라 확신합니다. 그러나 유용한 결과를 얻을 수는 없지만'make test.pdf '만 입력하면됩니다. 따라서, "작동하지 않는 것"이 ​​귀하의 경우에 의미하고, "업무"가 무엇이어야하는지 정의하십시오. – thiton

+0

@thiton : 정말 효과가 있습니까? '/ bin/bash : -c : Zeile 14 : Syntax Fehler : Unerwartetes Dateiende '라는 에러가 난다. make : *** [test.pdf] Fehler 1' Try in English :'/ bin/bash : -c : 14 행 : 구문 오류 : 예기치 않은 파일 끝. make : *** [test.pdf] Fehler 1' –

+0

이제 오류 메시지입니다. 다음 번에 귀하의 게시물에 포함 시키십시오. 그리고 독일어를 사용하지 않는 사람들을 위해'LC_ALL = en_US make '를 사용하십시오. – thiton

답변

4

else 바로 앞에 줄 14 (fi ;\)의 백 슬래시 뒤에 불필요한 공백이 있습니다.

+0

공백을 허용하는 트릭이 있습니까? –

+1

@MarcoDaniel : '\'앞에 만. 의심스러운 경우 bmargulies 우수한 조언을 따르고 자체 스크립트 파일을 작성하십시오. – thiton

4

make 명령에서이 정도의 복잡성은 고통과 고통에 대한 처방입니다. 명령의 거대한 연결을 가져 와서 .sh 파일로 옮기면 훨씬 더 즐거운 삶을 찾을 수 있습니다. 그런 다음 .sh 파일을 테스트하고 디버그 한 다음 .sh 파일을 실행하는 간단한 makefile을 만듭니다. 다른 사람이 미세한 빗으로 귀하의 메이크 파일을 읽고 특별한 문제를 발견하면 더 많은 힘을 얻습니다.

디버깅해야하는 경우 사본을 만드십시오. 스크립트의 두 번째 절반을 삭제하십시오. 그것이 효과가 있는지보십시오. 그렇지 않은 경우 문제를 격리 할 때까지 계속 삭제하십시오. 비록 여분의 공간을 지적한 대답은 아마도 스포트 온 일 것이다.

+0

나는 당신의 견해를 이해합니다. makefile은 CTAN에 업로드해야하며 "최종 사용자"는 make all 만 실행해야합니다. 현재 나는 github에서 currecnt Makefile을 단순화하려고 노력하고있다 : https://github.com/marcodaniel/mdframed/blob/master/Makefile –

+0

나는이 Makefile에서 영감을 얻었다. https://github.com/uktug/latex -beginners-course/blob/master/Makefile –

+0

글쎄, 그 경우 오류 메시지가 뭔가의 '끝'이 없음을 나타냅니다. 이진 검색으로 줄입니다. – bmargulies