让 Arduino IDE 将编译器警告设置为错误

问题描述 投票:0回答:2

有没有办法将编译器警告设置为 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
开始的。所以我检查这一点来决定是否添加/更新编译选项。

arduino arduino-ide
2个回答
3
投票

看起来您使用的是 Linux。 Arduino 是一个脚本,因此您可以在脚本中设置 PATH,将开头的目录包含到包含程序的目录avr-g++。那么 Java 的东西应该从那里获取编译器,不是吗?

该程序然后使用额外选项调用正常的 /usr/bin/avr-g++


1
投票

您的一个选择是从命令行编译草图。看看这个 makefile

© www.soinside.com 2019 - 2024. All rights reserved.