Is it possible to display compiler warnings in Arduino?

大城市里の小女人 提交于 2019-12-19 04:44:39

问题


I would like the Arduino IDE to display compiler warnings, and I would rather not have to compile once in the terminal for warnings, and again through Arduino to generate the hex file.

Holding down the shift key while clicking the "Verify" button shows intermediate commands, but none of their output. Is this possible without hacking the Arduino IDE?


回答1:


This feature has been added to the latest Arduino source code, although is not yet in a released version (see https://github.com/arduino/Arduino/commit/a2235e3cdc3856cbeba7de84e81bfd914b3ebaea).

It's planned to be included in the next major Arduino IDE release (version 1.0) which is currently planned for release at the end of October 2011. The current release candidate has this fix (as of October 25, 2011).

To enable compiler warnings from within the Arduino IDE, open File | Preferences then tick Show verbose output during: compilation and/or Show verbose output during: upload.




回答2:


Using Arduino IDE 1.6.4 and newer, the warning level can be easily adjusted via File > Preferences > Compiler warnings:.

Using Arduino AVR Boards the compiler flags set via this option are:

  • "None": -w
  • "Default":
  • "More: -Wall
  • "All": -Wall -Wextra



回答3:


The default compiler command line options include -w, which suppresses warnings, but you can change that by editing C:\Program Files (x86)\Arduino\hardware\arduino\avr\platform.txt. Since the libraries might contain warnings, but I want -Werror for myself, I removed the -w options, and then added to my source code:

#pragma GCC diagnostic error "-Wall"
#pragma GCC diagnostic error "-Werror"



回答4:


The feature as described @Matthew, not only displays the warnings, but a lot of distracting information on how the compiler was called as well.

See the addendum to my question Have Arduino IDE set compiler warnings to error implement the changes to the arduino script:

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

and make the extra/avr-g++:

#! /usr/bin/env python

import os
import sys
import subprocess

checklibpat = [
    'SoftwareSerial',
    'GSM_GPRS',
]

werr = '-Werror'
wall = '-Wall'

cmd = ['avr-g++'] + sys.argv[1:]
os.environ['PATH'] = os.environ['ORGPATH']
fname = sys.argv[-2][:]
extend = False
warn = False
if cmd[-2].startswith('/tmp'):
    extend = True
    warn = True
if not extend:
    for l in checklibpat:
        if l in cmd[-2]:
            warn = True
            break
if warn:
    #print len(fname), list(fname)
    for i, c in enumerate(cmd):
        if c == '-w':
            cmd[i] = wall
            break
    if extend:
        cmd.insert(1, werr)
## to enable deprecated stuff (Print.cpp) with gcc 4.7.0
#cmd.insert(1, '-D__PROG_TYPES_COMPAT__=1')
subprocess.call(cmd)

Comment out extend = True if you do not want the compiler to interpret warnings in your source as errors.




回答5:


Most answers here seem to be outdated. From Arduino.app 1.5 onwards you must find the file preferences.txt (https://www.arduino.cc/en/Hacking/Preferences) and change the line compiler.warning_level=none to compiler.warning_level=all IMPORTANT: Quit Arduino first, edit, then start the IDE again.



来源:https://stackoverflow.com/questions/7803443/is-it-possible-to-display-compiler-warnings-in-arduino

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!