Makefile定制变量

Makefile Customizing Variables

本文关键字:变量 Makefile      更新时间:2023-10-16

我有一个带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. 传递一个自定义参数,即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