0

有没有办法将编译器警告设置为 Arduino IDE 中的错误?
或者任何通用的方式来设置 GCC 编译器选项?

我查看了~/.arduino/preferences.txt文件,但没有发现任何表明微调控制的信息。我还查看了是否可以通过环境变量设置 GCC 选项,但我没有找到任何东西。

我不想让冗长的编译器输出(您可以使用 IDE 指定)过多地分散非必要信息的注意力,而且我不想浪费时间阅读它。

我希望编译在出现警告时停止,因此可以清理代码。我的偏好是能够设置选项,但是对于小代码大小的项目来说-Werror=,泛型将是可行的。-Werror.ino

附录:

根据所选答案中的建议,我实现了一个avr-g++脚本并将其放在 normal 之前的路径中avr-g++。为此,我将 Arduino 命令更改如下:

-export PATH="${APPDIR}/java/bin:${PATH}"
+export ORGPATH="${APPDIR}/java/bin:${PATH}"
+export PATH="${APPDIR}/extra:${ORGPATH}"

extra在 APPSDIR(Arduino 命令所在的位置)的新目录中,我有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。所以我检查它以决定是否添加/更新编译选项。

4

2 回答 2

3

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

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

于 2012-05-26T06:04:10.967 回答
1

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

于 2012-05-26T05:15:49.723 回答