Kérdés:
Hogyan lehet kódom egy projektben, amely nem fordít Arduino-hoz?
Kevin Reid
2018-11-14 22:32:15 UTC
view on stackexchange narkive permalink

Szeretném tesztelni a kódomban szereplő algoritmusokat anélkül, hogy el kellene küldenem azt egy tényleges Arduino táblára. Arra gondoltam, hogy a projektemet eltervezhetem, például: core pc-main.cpp # main (argv) behívás a core

Amikor azonban ezt megteszem, az Arduino IDE le akarja fordítani a pc-main.cpp , ami nem fog működni, mivel az stdio-t és mindezt használja. Mit tehetek helyette?

Van-e mód arra, hogy elrejtsen egy fájlt a build felől, kivéve a kiterjesztés megváltoztatását, ami más szerkesztőket és fordítókat kényelmetlenül érintene? Van másfajta szokásos megközelítés az ilyen jellegű problémákra?


Amire gondoltam:

  • pc- A main.cpp fájl egy másik könyvtárban, és a buildje utaljon az Arduino projekt könyvtárában található fájlokra, de ez kínosnak tűnik, és szeretnék egy elegánsabb megoldást.

  • Összekapcsolhatnám a core. * fájlokat az Arduino projekt könyvtárába máshonnan, de ez is inelegáns és kellemetlenségeket okozhat, ha a Windows felhasználóknak össze kell állítaniuk a projektet.

  • Helyezhetnék egy #ifdef -t a pc-main.cpp tartalma köré, de nem találtam megfelelő #define az alapértelmezettek kivételével.

Nem szeretnék olyan megoldást, amely minden egyes buildhez további lépéseket igényelne; ennek a megvalósításának lényege a gyors és egyszerű fejlesztés.

Azt is jobban szeretném, ha nem hozna létre további kiegészítő build rendszert, tesztelési keretrendszert vagy IDE-t; például a kérdés kutatása közben találtam arduino_ci és PlatformIO. Áttérek az ilyen lehetőségek vizsgálatára, ha nincs jó megoldás a problémára, amint itt megfogalmaztam.


[Kérdésem vitathatatlanul megegyezik a Projektstruktúra felépítése PC-re és Arduino-hoz magas szinten, de a kérdések és válaszok széles körűek és a modulok szervezéséről szólnak, és nem arról, hogy hogyan készítsék el a buildet valóban működik.]

Egy válasz:
Edgar Bonet
2018-11-14 22:36:31 UTC
view on stackexchange narkive permalink

Feltételes fordítást használnék, így:

  #ifndef (ARDUINO) // Nem Arduino kód. # endif  
Köszönöm. Van-e hivatalos dokumentáció, amely meghatározza ezt a # definiálást?
Hozzáadhatja a #define parancsot a kódjához, és manuálisan megváltoztathatja azt, amikor környezetet változtat. Megkeresheti az [Arduino fordító előre definiált szimbólumait] (https://duckduckgo.com/?q=arduino+compiler+predefined+symbols&ia=qa). Vagy módosíthatja az IDE fordítójának parancsát, hogy tartalmazza a "-DSYMBOL_OF_MY_CHOICE" szót, amely meghatározná a szimbólumot egy IDE-fordítás során, és feltehetően nincs meghatározva az asztalon.
Az egyértelműség érdekében azt tapasztaltam, hogy az `ARDUINO` már definiálva van, és nem kellett semmit konfigurálnom, így Edgar kódja pontosan úgy működik, ahogy írták. Kérdezem, van-e rá dokumentáció, mivel szerintem egy linkkel még jobb lenne a válasz.
@KevinReid: Nem találtam meg egy dokumentumban (bár [itt] említik (https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification#recipes-to- compile-source-code)), de [egy Makefile-ben] (https://github.com/sudar/Arduino-Makefile/blob/1.6.0/Arduino.mk#L1016) az Arduino IDE utánzását tűzte ki célul.


Ezt a kérdést és választ automatikusan lefordították angol nyelvről.Az eredeti tartalom elérhető a stackexchange oldalon, amelyet köszönünk az cc by-sa 4.0 licencért, amely alatt terjesztik.
Loading...