gpt4 book ai didi

c++ - Makefile 自定义变量

转载 作者:行者123 更新时间:2023-11-30 17:30:55 24 4
gpt4 key购买 nike

我有一个带有 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com