我一直希望修改Arduino的IDE 1.x下的构建标志,甚至修改Arduino CLI (我还没有使用但愿意采用),这样我就可以取消定义-std=gnu++11,而不是定义-std=gnu++14。
我发现了一个与此相关的问题,它给了我几乎我需要的东西:
Arduino 1.0.6: How to change compiler flag?
但它只展示了如何添加标志,而不是删除标志。我找到了另一篇关于将arduino转换为GNU C++17的相关文章,但答案是这是不可能的。
在这种情况下,我知道这是可能的,因为我在平台IO中这样做是为了使用htcw_gfx库。它在大多数能合理运行GFX的平台上工作得很好。
但我只是不知道如何摆弄阿杜伊诺,让它以我需要的方式跳舞。
任何帮助都将不胜感激。
发布于 2022-07-16 03:00:24
您可以修改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),它就不能工作。
资料来源:
https://stackoverflow.com/questions/71728125
复制相似问题