Arduino 프로젝트에서 브레드 보드에 Arduino Mega2560 및 독립형 ATmega 328P DIP 칩을 컴파일하고 다운로드하기위한 구성을 빌드했습니다. Hello 프로그램과 같은 장치 독립 코드의 경우 최소한 두 구성이 각각의 장치에서 컴파일, 다운로드 및 실행됩니다. 그러나 대부분의 f/ex, blinky 프로그램에는 조건부 장치 종속 코드가 필요합니다. 나는 컴파일러 명령 행에 추가 될 구성 당 (프로젝트 속성> C/C++ 빌드> AVR 컴파일러 (AVR C++ 컴파일러)> 심볼)의 심볼을 만들고 정의 할 수 있습니다.Eclipse : 컴파일 타임에 빌드 - 구성 변수를 사용하는 방법은 무엇입니까?
그러나 IDE의 어느 곳에서나 각 구성에 대해 선택한 부분과 기타 선택 사항은 (프로젝트 속성> C/C++ 빌드> 환경)에서 환경 변수에 지정되어 있으며 일부는 컴파일러 명령에 전달됩니다 -line 옵션은 -D 옵션이 아닙니다. 나는 1) 자동으로 만들어지기 때문에 기존의 것들을 사용하고 싶다; 2) 나는 컴파일러 중 하나에 대해 그 중 하나를 다르게 입력하지 않을 것이다. 3) 동일한 규칙에 따라 다른 작가가 나에게, 다른 프로젝트에서는 코드를 더 이식성있게 만들 수 있습니다.
#defines로 컴파일러에 전달하는 방법이 있습니까? 생성하는 해결 방법 I 작성한 사전 빌드 스크립트로
:
편집
(이클립스 인디고, CrossPack-AVR-20100115, & 맥 OS 10.6.8)
printenv | awk 'BEGIN{print "/*** AUTO-GENERATED FILE -- DO NOT EDIT. ***/\n";} {sub(/^/, "#define "); sub(/=/, " "); print; }' >${CWD}/../src/buildtime-environment.h
: 헤더 파일은 빌드 타임 환경 변수를 #define한다합니다
그것은 두 가지주의 사항과 충분히 잘 작동합니다
- 그것은 깨지기 쉬운 - 그것은 내 프로젝트 디렉토리 구조의 "특별한 지식"을 가지고있다.
- 매크로 편집기에서 해당 매크로 중 하나를 가리키면 매크로 확장 도구 팁에 매크로의 오래된 값이 표시 될 수 있으므로이를 잊어 버렸을 때 유령을 쫓아 낼 수 있습니다. 팁.
(해결책을 찾는 것을 포기하지 않는 한 /까지이 의견을 남겨 둘 것입니다).
이것은 내가 지금까지 생각 해낸 것 중 최고입니다. 나는 아직도 다른 제안에 열려있다. – JRobert