Можно ли отображать предупреждения компилятора в Arduino? - PullRequest
2 голосов
/ 18 октября 2011

Я бы хотел, чтобы в Arduino IDE отображались предупреждения компилятора, и я бы предпочел не компилировать один раз в терминале для предупреждений, и снова через Arduino для генерации шестнадцатеричного файла.

Удерживая нажатой клавишу Shift при нажатии кнопки «Подтвердить», отображаются промежуточные команды, но не выводятся их результаты.Возможно ли это без взлома Arduino IDE?

Ответы [ 5 ]

4 голосов
/ 31 июля 2017

Используя Arduino IDE 1.6.4 и новее, уровень предупреждения можно легко настроить с помощью Файл> Предпочтения> Предупреждения компилятора: .

Использование Arduino AVR Boards флаги компилятора, установленные с помощью этой опции:

  • "Нет": -w
  • «По умолчанию»:
  • "Подробнее: -Wall
  • «Все»: -Wall -Wextra
2 голосов
/ 17 марта 2015

Параметры командной строки компилятора по умолчанию включают -w, который подавляет предупреждения, но вы можете изменить это, отредактировав C:\Program Files (x86)\Arduino\hardware\arduino\avr\platform.txt. Поскольку библиотеки могут содержать предупреждения, но я хочу -Werror для себя, я удалил параметры -w, а затем добавил в свой исходный код:

#pragma GCC diagnostic error "-Wall"
#pragma GCC diagnostic error "-Werror"
1 голос
/ 28 мая 2012

Функция, описанная @Matthew, отображает не только предупреждения, но и много отвлекающей информации о том, как вызывался компилятор.

См. Приложение к моему вопросу Установите Arduino IDEпредупреждения компилятора об ошибке реализуют изменения в скрипте arduino:

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

и делают 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)

Комментарий extend = True, если вы не хотитекомпилятор для интерпретации предупреждений в вашем источнике как ошибки.

1 голос
/ 25 октября 2011

Эта функция была добавлена ​​в последний исходный код Arduino, но еще не выпущена (см. https://github.com/arduino/Arduino/commit/a2235e3cdc3856cbeba7de84e81bfd914b3ebaea).

).

Планируется включить в следующий основной выпуск Arduino IDE (версия 1.0), который в настоящее время запланирован к выпуску в конце октября 2011 года . текущий кандидат на выпуск имеет это исправление (по состоянию на 25 октября 2011 г.).

Чтобы включить предупреждения компилятора из Arduino IDE, откройте File | Preferences, затем отметьте Show verbose output during: compilation и / или Show verbose output during: upload.

0 голосов
/ 31 июля 2017

Большинство ответов здесь устарели.Начиная с версии Arduino.app 1.5 вы должны найти файл Предпочтения.txt (https://www.arduino.cc/en/Hacking/Preferences) и изменить строку compiler.warning_level=none на compiler.warning_level=all ВАЖНО: Сначала выйдите из Arduino, отредактируйте, а затем снова запустите IDE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...