2014-07-21 2 views
0

WIFI 방패가 달린 arduino 보드가 있습니다. 나는 집에서 나의 유닛을 조립하고 테스트하고 테스트 현장에서 배치하고있다.Makefile 커스터마이징 변수

Home: 
String WIFI_SSID = "myssid"; 
String WIFI_PASSWORD = "123"; 
bool USE_IP = true; 
int PORT = 8080; 
String IP = "192.168.1.140"; 
String DOMAIN = null; 

Test-site: 
String WIFI_SSID = "Test-siteSSID"; 
String WIFI_PASSWORD = "456"; 
bool USE_IP = false; 
int PORT = 80; 
String IP = null; 
String DOMAIN = "www.google.com"; 

를 나는 내가 꽤 자주 발생 위치 (전환하고 때마다 아두 이노 IDE에 수동으로 변수를 변경해야 할 매우 성가신 찾을 :

이 내가 지금 사용하고 파라미터 세트는). 그래서 https://github.com/sudar/Arduino-Makefile을 보았습니다. arduino 코드를 빌드하고 컴파일하기 위해 커맨드 라인을 사용할 수있게되었습니다.

  1. 방법, 즉 make HOME 또는 make DEPLOY
  2. 그림을 만들 수있는 사용자 정의 인수에
  3. 패스 내부 변수의 자신의 세트와 2 개 헤더 파일을 만듭니다

    내가 할 계획 무엇인가 컴파일 할 때 오른쪽 헤더 파일을 포함 시키려면
  4. 컴파일, make 파일 자체가주의해야합니다.

내 질문은 :

  1. 내가 추가 매개 변수 2 단계에서 HOME 또는 DEPLOY에 어떻게 전달할 수 있습니다?
  2. 제공된 인수에 따라 Arduino 컴파일러는 3 단계에서 포함 할 헤더 파일을 어떻게 파악할 수 있습니까?
+0

@MikeW 추가 매개 변수 인 HOME 및 DEPLOY를 전달하는 방법을 구체적으로 묻고 런타임에 몇 가지 코드를 포함 시켜서 포함 시킬지 결정합니다. 이 부분은 어떻게 구체적이지 않습니까? – disappearedng

답변

0

이것은 당신의 메이크 간다 :

make TARGET=DEPLOY 
make TARGET=HOME 

되지 않음 :이의

#ifdef DEPLOY 
#include "defs_deploy.h" 
#else 
#ifdef HOME 
#include "defs_home.h" 
#else 
#error Neither DEPLOY nor HOME is defined 
#endif /* HOME */ 
#endif /* DEPLOY */ 

하나는 명령 행에 간다 :이 소스 코드에 간다

TARGET?=DEPLOY 

all: build ... 

build: 
\tgcc ... -D$(TARGET) ... 

.PHONY: all build ... 

예쁘지 만 작동 할 것입니다.