有没有办法将编译器警告设置为 Arduino IDE 中的错误?
或者任何设置 GCC 编译器选项的通用方法?
我查看了 ~/.arduino/preferences.txt 文件,但我没有发现任何表明微调控制的信息。我还查看了是否可以通过环境变量设置 GCC 选项,但我没有找到任何东西。
我不想有冗长的编译器输出(您可以使用 IDE 指定),这会分散太多的非必要信息,而且我不想浪费时间阅读它。
我希望编译在出现警告时停止,以便可以清理代码。我的偏好是能够设置
-Werror=
选项,但通用 -Werror
适合 .ino
项目的小代码大小。
附录:
根据所选答案中的建议,我实现了一个
avr-g++
脚本并将其放在正常 avr-g++
之前的路径中。为此,我更改了 Arduino 命令,如下所示:
-export PATH="${APPDIR}/java/bin:${PATH}"
+export ORGPATH="${APPDIR}/java/bin:${PATH}"
+export PATH="${APPDIR}/extra:${ORGPATH}"
在APPSDIR(Arduino命令所在的位置)的新目录
extra
中,我有
avr-g++
,这是一个 Python 脚本:
#!/usr/bin/env python
import os
import sys
import subprocess
werr = '-Werror'
wall = '-Wall'
cmd = ['avr-g++'] + sys.argv[1:]
os.environ['PATH'] = os.environ['ORGPATH']
fname = sys.argv[-2][:]
if cmd[-2].startswith('/tmp'):
#print fname, list(fname) # this looks strange
for i, c in enumerate(cmd):
if c == '-w':
cmd[i] = wall
break
cmd.insert(1, werr)
subprocess.call(cmd)
因此,您将第一个命令替换为原始编译器名称,并重置用于排除
extra
目录的环境。
fname
其实很奇怪。如果打印出来的话,它只是abc.cpp
,但它的长度要大得多,而且实际上是从/tmp
开始的。所以我检查这一点来决定是否添加/更新编译选项。
看起来您使用的是 Linux。 Arduino 是一个脚本,因此您可以在脚本中设置 PATH,将开头的目录包含到包含程序的目录avr-g++。那么 Java 的东西应该从那里获取编译器,不是吗?
该程序然后使用额外选项调用正常的 /usr/bin/avr-g++。
您的一个选择是从命令行编译草图。看看这个 makefile。