繁体   English   中英

让 Arduino IDE 为 C++14 编译

[英]Getting Arduino IDE to compile for C++14

我一直在寻找修改 Arduino IDE 1.x 甚至 Arduino CLI(我没有使用但愿意采用)下的构建标志,以便我可以取消定义 -std=gnu++11 而是定义-std=gnu++14

我发现了一个与此相关的问题,它几乎满足了我的需求:

Arduino 1.0.6:如何更改编译器标志?

但它只显示了如何添加标志,而不是删除它们。 我发现了另一篇关于将 arduino 更改为 GNU C++17 的相关帖子,但答案是不可能的。

在这种情况下,我知道这是可能的,因为我在 Platform IO 中这样做是为了使用 htcw_gfx 库。 它在大多数可以合理运行 GFX 的平台上运行良好。

但我只是不知道如何摆弄 Arduino 让它按照我需要的方式跳舞。

任何帮助将不胜感激。

您可以修改hardware/arduino/avr/platform.txt文件中的默认编译标志。

$ grep -n "std" hardware/arduino/avr/platform.txt
23:compiler.c.flags=-c -g -Os {compiler.warning_flags} -std=gnu11 -ffunction-sections -fdata-sections -MMD -flto -fno-fat-lto-objects
28:compiler.cpp.flags=-c -g -Os {compiler.warning_flags} -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto

对于某些 linux 系统,以下内容可以自动执行此操作:

dirname $(realpath $(which arduino)) | xargs -I{} sed -i "s/\(std=gnu++1\)1/\14/" {}/hardware/arduino/avr/platform.txt

但这不是很便携,如果用户安装了带有 Snap 的 Arduino(因为 snap 已经安装了这些文件 RO),它将无法工作。

资料来源:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM