2017-08-10 27 views
0

私はArduinoファイル/プロジェクトをMakefileでコンパイルしようとしています。しかし、私はグローバル変数に問題があります。それは宣言されていないと言います。ダウンロードしたメイクファイルはgithub:https://github.com/sudar/Arduino-Makefileです。Arduinoメイクファイルはコンパイルできません

私はArduinoについての経験がないので、何が問題になるかわかりません。

マイエラーコード:

------------------------- 
    Arduino.mk Configuration: 
    - [AUTODETECTED] CURRENT_OS = LINUX 
    - [COMPUTED] ARDMK_DIR = /usr/share/arduino (relative to Common.mk) 
    - [USER] ARDUINO_DIR = /usr/share/arduino 
    - [AUTODETECTED] ARDUINO_VERSION = 105 
    - [DEFAULT] ARDUINO_SKETCHBOOK = /sketchbook 
    - [BUNDLED] AVR_TOOLS_DIR = /usr/share/arduino/hardware/tools/avr (in Arduino distribution) 
    - [COMPUTED] ARDUINO_LIB_PATH = /usr/share/arduino/libraries (from ARDUINO_DIR) 
    - [DEFAULT] ARDUINO_CORE_PATH = /usr/share/arduino/hardware/arduino/cores/arduino 
    - [COMPUTED] ARDUINO_VAR_PATH = /usr/share/arduino/hardware/arduino/variants (from ARDUINO_DIR) 
    - [COMPUTED] BOARDS_TXT = /usr/share/arduino/hardware/arduino/boards.txt (from ARDUINO_DIR) 
    - [DEFAULT] USER_LIB_PATH = /sketchbook/libraries (in user sketchbook) 
    - [USER] BOARD_TAG = uno 
    - [COMPUTED] OBJDIR = build-uno (from BOARD_TAG) 
    - [ASSUMED] MONITOR_BAUDRATE = 9600 
    - [DEFAULT] OPTIMIZATION_LEVEL = s 
    - [DEFAULT] MCU_FLAG_NAME = mmcu 
    - [DEFAULT] CFLAGS_STD = -std=gnu99 
    - [AUTODETECTED] Size utility: AVR-aware for enhanced output 
    - 
    - ARDUINO_LIBS = 
    - [SYSTEM] Wire 
    - [SYSTEM] EEPROM 
    - [SYSTEM] Esplora 
    - [SYSTEM] Ethernet 
    - [SYSTEM] Firmata 
    - [SYSTEM] GSM 
    - [SYSTEM] LiquidCrystal 
    - [SYSTEM] Robot_Control 
    - [SYSTEM] Robot_Motor 
    - [SYSTEM] SD 
    - [SYSTEM] Servo 
    - [SYSTEM] SoftwareSerial 
    - [SYSTEM] SPI 
    - [SYSTEM] Stepper 
    - [SYSTEM] TFT 
    - [SYSTEM] WiFi 
    - [SYSTEM] Wire 
    - [SYSTEM] Wire/utility 
    - [SYSTEM] Ethernet/utility 
    - [SYSTEM] Robot_Control/utility 
    - [SYSTEM] SD/utility 
    - [SYSTEM] TFT/utility 
    - [SYSTEM] WiFi/utility 
    - [SYSTEM] Wire/utility 
    - [COMPUTED] BOOTLOADER_PARENT = /usr/share/arduino/hardware/arduino/bootloaders (from ARDUINO_DIR) 
    ------------------------- 
    /usr/share/arduino/hardware/tools/avr/bin/avr-g++ -MMD -c -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=105 -I. -I/usr/share/arduino/hardware/arduino/cores/arduino -I/usr/share/arduino/hardware/arduino/variants/standard -I/usr/share/arduino/libraries/Wire -I/usr/share/arduino/libraries/EEPROM -I/usr/share/arduino/libraries/Esplora -I/usr/share/arduino/libraries/Ethernet -I/usr/share/arduino/libraries/Firmata -I/usr/share/arduino/libraries/GSM -I/usr/share/arduino/libraries/LiquidCrystal -I/usr/share/arduino/libraries/Robot_Control -I/usr/share/arduino/libraries/Robot_Motor -I/usr/share/arduino/libraries/SD -I/usr/share/arduino/libraries/Servo -I/usr/share/arduino/libraries/SoftwareSerial -I/usr/share/arduino/libraries/SPI -I/usr/share/arduino/libraries/Stepper -I/usr/share/arduino/libraries/TFT -I/usr/share/arduino/libraries/WiFi -I/usr/share/arduino/libraries/Wire -I/usr/share/arduino/libraries/Wire/utility -I/usr/share/arduino/libraries/Ethernet/utility -I/usr/share/arduino/libraries/Robot_Control/utility -I/usr/share/arduino/libraries/SD/utility -I/usr/share/arduino/libraries/TFT/utility -I/usr/share/arduino/libraries/WiFi/utility -I/usr/share/arduino/libraries/Wire/utility -Wall -ffunction-sections -fdata-sections -Os -fno-exceptions main.cpp -o build-uno/main.o 
    main.cpp: In function 'void setup()': 
    main.cpp:17:16: error: 'OUTPUT' was not declared in this scope 
    pinMode(led, OUTPUT); 
    ^
    main.cpp:17:22: error: 'pinMode' was not declared in this scope 
    pinMode(led, OUTPUT); 
    ^
    main.cpp: In function 'void loop()': 
    main.cpp:23:30: error: 'analogWrite' was not declared in this scope 
    analogWrite(led, brightness); 
    ^
    main.cpp:33:11: error: 'delay' was not declared in this scope 
    delay(30); 
    ^
    make: *** [build-uno/main.o] Error 1 
+1

多分いくつかのコードが役に立つかもしれません... – Jepessen

答えて

2

ArduinoのIDEは、Arduinoの-のMakefileがないこと(https://github.com/arduino/arduino-preprocessor#about-the-arduino-sketch-ino-preprocessingを参照)、いくつかの "スケッチ前処理" を行います。言い換えれば、Arduino IDEはあなたのsketch.inoをC++に変換してから、Arduino-Makefileをコンパイルしようとする前にコンパイルしようとします。

その結果、Arduino-Makefileは、Arduino IDEを使ってコンパイルするスケッチをコンパイルできません。手作業でこれらの3つのステップを実行すると、通常、トリックが実行されます。

  1. 多くのソースファイルがありますか?はいの場合は、それらを1つのファイルにマージします。
  2. #include <Arduino.h>は単一のソースファイルの先頭にありますか?そうでない場合は、追加します。
  3. すべての関数は使用前に宣言されていますか?そうでない場合は、前方宣言を追加します。あなたのケースでは

ステップ2が必要とされているように、それは(あなたのコンパイルエラーメッセージから不足している変数OUTPUTとmissings機能がArduino.hで宣言されている、https://github.com/arduino/Arduino/blob/master/hardware/arduino/avr/cores/arduino/Arduino.hを参照してください)になります。

あなたがArduino-Makefileを使い続けるつもりなら、Arduino-IDEを使用してテストされているほとんどのスケッチで、これらのタイプのエラーに慣れることをお勧めします。明るい面では、C++に変換するのは通常は些細なことですが、Arduinoのスケッチはあまり「大」ではないので、めったに時間がかかりません。

関連する問題