2012-06-23 3 views
0

나는 makefile for compiling Arduino programs을 가지고있다.메이크 파일의 옵션으로 외부 명령 호출하기

일부 논리를 기반으로 일부 파일의 시작 부분에 텍스트를 추가해야합니다. 나는 echo 명령을 사용하고 있습니다.

ECHO = echo 

나중에 파일에

, 나는 잘 작동

$(OBJDIR)/%.cpp: %.pde 
    $(ECHO) '#if ARDUINO >= 100\n #include "Arduino.h"\n#else\n #include "WProgram.h"\n#endif' > [email protected] 

같은 곳이 많이 있습니다.

최근 일부 사용자는 일부 Linux 배포판에서 echo 명령이 제대로 작동하지 않으며 echo 명령에 '-e'옵션을 추가해야한다고 불평했습니다. 메이크 텍스트의 한 부분으로 -e를 고려하지 옵션의 일부로 때문에

그래서 내가

ECHO = echo -e 

이 작동하지 않습니다에 명령을 선언하는 첫 번째 줄을 변경했습니다.

편집 :

내가 어떤 오류가 아니지만, 텍스트 -e는 내가 만드는 오전 파일에 추가됩니다.

-e를 옵션으로 선언하고 텍스트의 일부로 선언 할 방법이 있습니까?

답변

2

echo은 일부 셸의 일부 버전에서 셸 기본 제공 명령이기 때문에 동작 차이가 발생할 가능성이 큽니다. make는 때로는 쉘을 사용하여 명령을 호출하기 때문에 가능한 경우 명령을 직접 호출하는 편이 더 좋습니다. 따라서 때로는 일부 시스템에서는 사용자가 생각하는 echo 명령을 호출하지 않습니다.

당신은 아마 명시 적으로 쉘이 내장 된 버전이있는 경우에도, 외부 echo 명령을 호출합니다

ECHO = /bin/echo -e 

를 설정하여 더 좋은 행운이있을 것입니다. 그렇게하면 일관된 결과를 얻어야합니다.

+0

감사합니다. 그러나 이것이 Mac OS에 어떤 문제가 있는지 확실하지 않습니다. 거기에서도 테스트 해 볼 필요가 있습니다. – Sudar

1

/bin/sh: 1: -e: not found 오류가 발생하는 경우 makefile.else가 아닌 쉘과 관련이 있습니다. 오류를 넣어주세요. 물론 오류가 발생하는 경우.

+0

질문을 업데이트했습니다. 오류가 발생하지는 않지만 텍스트 -e가 파일에 추가됩니다. – Sudar

+0

@Sudar echo의 매뉴얼 페이지에서 다음 텍스트를 찾았습니다 : 이것은 당신의 문제가 아닙니다 ** 당신의 쉘은 에코를 가질 수 있습니다. 보통 echo는 여기에 설명 된 버전보다 우선합니다. 지원하는 옵션에 대한 자세한 내용은 쉘 설명서를 참조하십시오. ** – PersianGulf

관련 문제