我有一个带有 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 代码。
这就是我打算做的:
- 创建 2 个头文件,其中包含自己的变量集
- 传入 make 的自定义参数,即
make HOME
或make DEPLOY
- 弄清楚如何在编译时包含正确的头文件
- 编译,由 make 文件本身负责。
我的问题是:
- 如何在第 2 步中传入附加参数
HOME
或DEPLOY
? - 根据提供的参数,Arduino 编译器如何确定在步骤 3 中包含哪个头文件?
最佳答案
这会出现在你的 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
不太漂亮,但它会起作用。
关于c++ - Makefile 自定义变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24856173/