Makefile定制变量
Makefile Customizing Variables
我有一个带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代码。
这就是我计划要做的:
- 在 中创建两个头文件,其中包含它们自己的一组变量
- 传递一个自定义参数,即
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
相关文章:
- Makefile g++ 使用命令行中的 -D 变量进行编译,默认值
- 如何将makefile变量用作g 命令中包含的文件
- 使用定义的常量(来自 Makefile)在 C 中形成变量名称的一部分
- 与 Makefile 中的变量扩展混淆
- 如何在Makefile中正确使用变量
- Makefile说变量是空的,但它不是
- 使用 Code::Blocks、plink 和 makefile 进行远程编译时无法访问环境变量
- Makefile没有使用我的变量和规则(即编译器和它的标志)
- 如何定义一个变量,然后在目标[Makefile]中编译
- 用For循环填充Makefile变量
- 访问代码中的Makefile变量
- Makefile定制变量
- Makefile.am /配置.ac条件环境变量检查
- GNU Make -在规则/目标中设置shell命令输出中的MAKEFILE变量
- 根据Makefile中的目标更改变量
- 编译c++, Makefile基础知识:变量,包括库
- Makefile变量问题,make想要创建"*.o"而不是foo.o bar.o等
- C++makefile的Netbeans环境变量
- 如何将两个Makefile(每个生成的脚本都设置了特定的环境变量)合并到一个Makefile中
- 当环境变量发生变化时,让基于makefile的cmake项目自动运行make-rebuild_cache