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

The*_*ist 4 arduino c++11 arduino-ide

我目前正在使用Arduino 1.0.6 IDE开发一个项目,它似乎不接受C++ 11 std :: array.是否可以更改编译器标志以使其工作?

小智 8

您可以在文件#pragma内部使用*.ino,以便不必创建本地平台文件:

#pragma GCC diagnostic warning "-fpermissive"
#pragma GCC diagnostic ignored "-Wwrite-strings"
Run Code Online (Sandbox Code Playgroud)

对于其他的,请参见此处


Lis*_*yen 6

将自定义编译器标志添加到platform.local.txt。只需在platform.txt所在的目录中创建它即可。例如:

compiler.c.extra_flags=
compiler.c.elf.extra_flags=
compiler.S.extra_flags=
compiler.cpp.extra_flags=-mcall-prologues -fno-split-wide-types -finline-limit=3 -ffast-math
compiler.ar.extra_flags=
compiler.objcopy.eep.extra_flags=
compiler.elf2hex.extra_flags=
Run Code Online (Sandbox Code Playgroud)

在此示例中,C ++标志将使较大的草图更小。当然,您可以改用自己的标志。由于platform.local.txt不会覆盖标准文件并且非常简短,因此尝试使用编译器标志非常容易。

您可以将每个项目的platform.local.txt保存在其目录中。它不会对项目目录产生任何影响,但是通过这种方式,如果您决定再次处理旧项目,则可以将其复制到platform.txt所在的目录(通常是./hardware/arduino/avr/ ),并使用特定于项目的编译器标志继续进行您的项目。

显然,如果您有多个项目并且不介意处理Makefile,则使用Makefile作为ladislas建议可以更专业,更方便。但是,仍然可以使用platform.local.txt胜过直接将platform.txt弄乱,对于已经熟悉Arduino IDE的人来说,这是一种使用编译器标志的简便方法。


lad*_*las 5

使用IDE很难做到这一点.

我建议你使用Sudar的伟大Arduino Makefile完整命令行.

这样您就可以根据自己的喜好自定义编译器标志.

我还创建了Bare Arduino项目来帮助您入门.该文档涵盖了很多要点,从安装最新的avr-gcc工具链到如何使用存储库,编译和上传代码.

如果您发现遗漏的内容,请随时填写Github上的问题以便我可以修复它:)

希望这可以帮助!:)


mpf*_*aga 5

是的,但不是在 1.0.6 中,而是在 1.5 中。?.\Arduino\hardware\arduino\avr\platform.txt 指定用于编译的命令行。

可以直接修改此文件或将其复制到您的用户 .\arduino\hardware... 目录以创建自定义平台。由于不改变库存IDE。这也将存在于您可以运行的其他/更新的 IDE 中。您可以只复制平台文件和 board.txt。并将您的 board.txt 文件链接到核心:库,因为它不是一次性的。看

参考:更改 CPU 速度Mod 新板