Se mitt svar här: Klasser och objekt: hur många och vilka filtyper behöver jag faktiskt använda dem? - specifikt: Hur IDE organiserar saker.
Jag vet att du åtminstone måste inkludera Arduino-rubrikfilen
Ja du skulle behöva göra det.
men utöver det, vad skulle orsaka ett kompileringsfel om att kompilera nämnda .ino till .cpp-fil med exempelvis GCC-AVR.
IDE genererar funktionsprototyper åt dig. Kod i en .ino-fil kanske behöver eller inte (det kommer troligen att göra om inte författaren är tillräckligt disciplinerad för att koda på vanligt C ++ sätt och göra dem själva).
Om "skissen" innehåller andra filer (t.ex. andra .ino-, .c- eller .cpp-filer), då måste dessa införlivas i kompileringsprocessen som jag beskriver i mitt svar som nämns ovan.
Du måste också ( kompilera och) länka i några bibliotek som används av skissen.
Du har inte frågat om länkande sida av saker, men naturligtvis behöver de olika filerna, som sammanställts, länkas ihop och förvandlades sedan till en .elf- och .hex-fil för uppladdningsändamål. Se nedan.
Exempel på makefile
Baserat på IDE-utdata gjorde jag en enkel makefile för en tid tillbaka:
## Simple Arduino Makefile ## Författare: Nick Gammon # Datum: 18 mars 2015 # där du installerade Arduino appARDUINO_DIR = C: / Dokument och inställningar / Nick / Desktop / arduino-1.0.6 / # olika programCC = " $ (ARDUINO_DIR) hårdvara / verktyg / avr / bin / avr-gcc "CPP =" $ (ARDUINO_DIR) hårdvara / verktyg / avr / bin / avr-g ++ "AR =" $ (ARDUINO_DIR) hårdvara / verktyg / avr / bin / avr-ar "OBJ_COPY =" $ (ARDUINO_DIR) maskinvara / verktyg / avr / bin / avr-objcopy "MAIN_SKETCH = Blink.cpp # kompilera flaggor för g ++ och gcc # kan behöva ändra dessaF_CPU = 16000000MCU = atmega328p # kompilera flaggGENER_ c -g -Os -Vägg -funktion-sektioner -fdata-sektioner -mmcu = $ (MCU) -DF_CPU = $ (F_CPU) L -MMD -DUSB_VID = null -DUSB_PID = null -DARDUINO = 106
CPP_FLAGS = $ (GENERAL_FLAGS) -fno-undantagCC_FLAGS = $ (GENERAL_FLAGS) # plats för inkluderar filerINCLUDE_FILES = "-I $ (ARDUINO_DIR) hårdvara / arduino / kärnor / arduino" "-I $ (ARDUINO_DIR) / hårdvara "# library sourcesLIBRARY_DIR =" $ (ARDUINO_DIR) hårdvara / arduino / cores / arduino / "build: $ (CPP) $ (CPP_FLAGS) $ (INCLUDE_FILES) $ (MAIN_SKETCH) -o $ (MAIN_SKETCH). o $ (CC) $ (CC_FLAGS) $ (INCLUDE_FILES) $ (LIBRARY_DIR) avr-libc / malloc.c -o malloc.co $ (CC) $ (CC_FLAGS) $ (INCLUDE_FILES) $ (LIBRARY_DIR) avr-libc / realloc.c -o realloc. co $ (CC) $ (CC_FLAGS) $ (INCLUDE_FILES) $ (LIBRARY_DIR) WInterrupts.c -o WInterrupts.co $ (CC) $ (CC_FLAGS) $ (INCLUDE_FILES) $ (LIBRARY_DIR) ledningar.c -o ledningar.co $ (CC) $ (CC_FLAGS) $ (INCLUDE_FILES) $ (LIBRARY_DIR) wiring_analog.c -o wiring_analog.co $ (CC) $ (CC_FLAGS) $ (INCLUDE_FILES) $ (LIBRARY_DIR) wiring_digital.c -o wiring_digital.co $ ) $ (CC_FLAGS) $ (INCLUDE_FILES) $ (LIBRARY_DIR) wiring_pulse.c -o wiring_pulse.co $ (CC) $ (CC_FLAGS) $ (INCLUDE_FILES) $ (LIBRARY_DIR) wiring_shift.c -o wiring_shift.co $ (CPP) $ (CPP_FLAGS) $ (INCLUDE_FILES) $ (LIBRARY_DIR) CDC.cpp -o CDC.cpp.o $ (CPP) $ (CPP_FLAGS) $ (INCLUDE_FILES) $ (LIBRARY_DIR) HardwareSerial.cpp -o HardwareSerial.cpp.o $ (CPP) $ (CPP_FLAGS) $ (INCLUDE_FILES) $ (LIBRARY_DIR) HID.cpp -o HID.cpp.o $ (CPP) $ ( CPP_FLAGS) $ (INCLUDE_FILES) $ (LIBRARY_DIR) IPAddress.cpp -o IPAddress.cpp.o $ (CPP) $ (CPP_FLAGS) $ (INCLUDE_FILES) $ (LIBRARY_DIR) main.cpp -o main.cpp.o $ (CPP) $ (CPP_FLAGS) $ (INCLUDE_FILES) $ (LIBRARY_DIR) new.cpp -o new.cpp.o $ (CPP) $ (CPP_FLAGS) $ (INCLUDE_FILES) $ (LIBRARY_DIR) Print.cpp -o Print.cpp.o $ ( CPP) $ (CPP_FLAGS) $ (INCLUDE_FILES) $ (LIBRARY_DIR) Stream.cpp -o Stream.cpp.o $ (CPP) $ (CPP_FLAGS) $ (INCLUDE_FILES) $ (LIBRARY_DIR) Tone.cpp -o Tone.cpp.o $ (CPP) $ (CPP_FLAGS) $ (INCLUDE_FILES) $ (LIBRARY_DIR) USBCore.cpp -o USBCore.cpp.o $ (CPP) $ (CPP_FLAGS) $ (INCLUDE_FILES) $ (LIBRARY_DIR) WMath.cpp -o WMath.cpp .o
$ (CPP) $ (CPP_FLAGS) $ (INCLUDE_FILES) $ (LIBRARY_DIR) WString.cpp -o WString.cpp.o rm core.a $ (AR) rcs core.a malloc.co $ (AR) rcs core.a realloc .co $ (AR) rcs core.a WInterrupts.co $ (AR) rcs core.a wiring.co $ (AR) rcs core.a wiring_analog.co $ (AR) rcs core.a wiring_digital.co $ (AR) rcs core.a wiring_pulse.co $ (AR) rcs core.a wiring_shift.co $ (AR) rcs core.a CDC.cpp.o $ (AR) rcs core.a HardwareSerial.cpp.o $ (AR) rcs core .a HID.cpp.o $ (AR) rcs-kärna. en IPAddress.cpp.o $ (AR) rcs-kärna. en main.cpp.o $ (AR) rcs-kärna. en ny.cpp.o $ (AR) rcs core.a Print.cpp.o $ (AR) rcs core.a Stream.cpp.o $ (AR) rcs core.a Tone.cpp.o $ (AR) rcs core.a USBCore.cpp.o $ ( AR) rcs core.a WMath.cpp.o $ (AR) rcs core.a WString.cpp.o $ (CC) -Os -Wl, - gc-sektioner -mmcu = $ (MCU) -o $ (MAIN_SKETCH ). själv $ (MAIN_SKETCH) .o core.a -lm $ (OBJ_COPY) -O ihex -j .eeprom --set-sektionsflaggor = .eeprom = allokering, belastning - ingen förändringsvarning --ändra- sektion-lma. eeprom = 0 $ (MAIN_SKETCH). själv $ (MAIN_SKETCH) .eep $ (OBJ_COPY) -O ihex -R .eeprom $ (MAIN_SKETCH). själv $ (MAIN_SKETCH) .hex
In just det här fallet .ino-filen kompilerades utan problem efter att byta namn på den till Blink.cpp och lägga till den här raden:
#include <Arduino.h>