Переменные настройки Makefile

0

У меня есть доска arduino с щитом WIFI. Я собираю и тестирую свои подразделения дома и размещаю их на тестовом сайте.

Это набор параметров, которые я использую сейчас:

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";

Мне очень неприятно, что мне приходится вручную менять эти переменные в среде Arduino, когда я переключаю места (что происходит довольно часто). Поэтому я взглянул на https://github.com/sudar/Arduino-Makefile, который позволил мне использовать командную строку для сборки и компиляции кода arduino.

Это то, что я планирую сделать:

  1. Создайте 2 файла заголовка со своими наборами переменных внутри
  2. передать в пользовательский аргумент, чтобы сделать, то есть make HOME или make DEPLOY
  3. Выясните, как включить правый заголовочный файл во время компиляции
  4. компилировать, который берется самим файлом make.

Мои вопросы:

  1. Как я могу передать дополнительный параметр HOME или DEPLOY на шаге 2?
  2. Основываясь на приведенном аргументе, как может компилятор Arduino выяснить, какой заголовочный файл должен быть включен в шаге 3?
  • 0
    @MikeW Я спрашиваю, как конкретно передать дополнительный параметр HOME и DEPLOY, и чтобы какой-то код во время выполнения решал, что включать. Как это не достаточно конкретно?
Теги:
makefile
arduino

1 ответ

0

Это происходит в вашем make файле:

TARGET?=DEPLOY

all: build ...

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

.PHONY: all build ...

Это относится к исходному коду:

#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 */

Один из них идет по вашей командной строке:

make TARGET=DEPLOY
make TARGET=HOME

Не красиво, но это сработает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню