c++ - Makefile 自定义变量

标签 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 的自定义参数,即 make HOMEmake DEPLOY
  3. 弄清楚如何在编译时包含正确的头文件
  4. 编译,由 make 文件本身负责。

我的问题是:

  1. 如何在第 2 步中传入附加参数 HOMEDEPLOY
  2. 根据提供的参数,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/

相关文章:

c++ - 在 OSX 上从 C++ 打开 PDF

c++ - ofstream 不在 Windows 子系统中为 Linux 生成新行

c++ - 无法理解与模板和构造函数相关的错误

c++ - 链接到 xCode 中的 ROOT 文件

c - C程序中的数组

c++ - 当我们重复执行全部命令时会发生什么?

c - VS2013 : strtof doesn't set ERANGE?

c - 是否可以在未安装 TOR 的情况下连接到 TOR?

C++ 单独包含和源目录和#Include

makefile - 尽管安装了 gfortran,但找不到 -lgfortran