Makefile自定义变量

时间:2014-07-21 00:17:27

标签: c++ c makefile arduino

我有一个带有WIFI防护罩的arduino板。我正在家中组装和测试我的单元并在测试现场部署它们。

这些是我现在使用的参数集:

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 IDE中手动更改这些变量(这种情况经常发生)。所以我看一下https://github.com/sudar/Arduino-Makefile,这可以让我使用命令行来构建和编译arduino代码。

这是我打算做的事情:

  1. 中创建2个包含各自变量的头文件
  2. 传入自定义参数,即make HOMEmake DEPLOY
  3. 弄清楚如何在编译时包含正确的头文件
  4. 编译,由make文件本身处理。
  5. 我的问题是:

    1. 如何在步骤2中传递其他参数HOMEDEPLOY
    2. 根据提供的参数,Arduino编译器如何确定在步骤3中包含哪个头文件?

1 个答案:

答案 0 :(得分:0)

这是你的makefile:

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

不漂亮,但它会起作用。