אני מנסה לבנות דוגמה לארדואינו מבלי להשתמש ב- IDE שלה. מערכת ההפעלה שלי היא Windows 8.1 ואני משתמש בגרסה האחרונה של CMake (2.8.12.2) ו- MinGW (GNU Make 3.82.90) .
הורדתי את ה- Arakeino CMakeLists ולמדתי הכל על ליצור / להעלות
כל קושחה בארדואינו שלי. אני משתמש ב Arduino UNO .
ואז, אם אני משנה את רשימות CMakeLists שנשמרו ב ~ / arduino-cmake-master / example / CMakeLists.txt
( arduino-cmake-master הוא תיקיית המאגר) כדי לבנות גם את הדוגמה ל- WiFi WiFiWebClient גם:
... # הוסף את דוגמת ה- WiFi -> WiFiWebClientgenerate_arduino_example (wifi_example LIBRARY WiFi EXEMPLE WiFiWebClient) ...
ולבצע:
$ cmake -G "MinGW Makefiles" ... CMake אזהרה (dev) בדוגמה / CMakeLists.txt: המדיניות CMP0022 לא מוגדרת: INTERFACE_LINK_LIBRARIES מגדיר את ממשק הקישור. הפעל את "cmake --help-policy CMP0022" לפרטי מדיניות. השתמש בפקודה cmake_policy כדי להגדיר את המדיניות ולדכא אזהרה זו. היעד "uno_example" כולל נכס INTERFACE_LINK_LIBRARIES. יש להעדיף זאת כמקור ממשק הקישור לספריה זו, אך מכיוון שה- CMP0022 אינו מוגדר CMake מתעלם מהמאפיין ומשתמש ביישום הקישור כממשק הקישור במקום זאת. INTERFACE_LINK_LIBRARIES: uno_CORE; uno_example; uno_Wire יישום קישור: uno_CORE; uno_Wire אזהרה זו מיועדת למפתחי פרויקטים. השתמש ב- -Wno-dev כדי לדכא את זה. CMake אזהרה (dev) בדוגמה / CMakeLists.txt: המדיניות CMP0022 לא מוגדרת: INTERFACE_LINK_LIBRARIES מגדיר את ממשק הקישור. הפעל את "cmake --help-policy CMP0022" לפרטי מדיניות. השתמש בפקודה cmake_policy כדי להגדיר את המדיניות ולדכא אזהרה זו. יעד "uno_Wire" כולל נכס INTERFACE_LINK_LIBRARIES. זה צריך להיות מועדף כמקור ממשק הקישור לספריה זו, אך מכיוון שה- CMP0022 אינו מוגדר CMake מתעלם מהמאפיין ומשתמש במקום זאת ביישום הקישור כממשק הקישור. INTERFACE_LINK_LIBRARIES: uno_CORE; uno_Wire קישור קישור: uno_CORET אזהרה זו מיועדת למפתחי פרויקטים. השתמש ב- -Wno-dev כדי לדכא את זה. CMake אזהרה (dev) בדוגמה / CMakeLists.txt: המדיניות CMP0022 לא מוגדרת: INTERFACE_LINK_LIBRARIES מגדיר את ממשק הקישור. הפעל את "cmake --help-policy CMP0022" לפרטי מדיניות. השתמש בפקודה cmake_policy כדי להגדיר את המדיניות ולדכא אזהרה זו. יעד "uno_SPI" כולל נכס INTERFACE_LINK_LIBRARIES. יש להעדיף זאת כמקור ממשק הקישור לספריה זו, אך מכיוון שה- CMP0022 אינו מוגדר CMake מתעלם מהמאפיין ומשתמש ביישום הקישור כממשק הקישור במקום זאת. INTERFACE_LINK_LIBRARIES: uno_CORE; uno_SPI יישום קישור: uno_CORET אזהרה זו מיועדת למפתחי פרויקטים. השתמש ב- -Wno-dev כדי לדכא את זה. CMake אזהרה (dev) בדוגמה / CMakeLists.txt: המדיניות CMP0022 לא מוגדרת: INTERFACE_LINK_LIBRARIES מגדיר את ממשק הקישור. הפעל את "cmake --help-policy CMP0022" לפרטי מדיניות. השתמש בפקודה cmake_policy כדי להגדיר את המדיניות ולדכא אזהרה זו. יעד "uno_WiFi" כולל נכס INTERFACE_LINK_LIBRARIES. יש להעדיף זאת כמקור ממשק הקישור לספריה זו, אך מכיוון שה- CMP0022 אינו מוגדר CMake מתעלם מהמאפיין ומשתמש ביישום הקישור כממשק הקישור במקום זאת. INTERFACE_LINK_LIBRARIES: uno_CORE; uno_WiFi קישור יישום: uno_CORET אזהרה זו מיועדת למפתחי פרויקטים. השתמש ב- Wno-dev כדי לדכא את זה. - יצירת הבד - קבצי בנייה נכתבו אל: ~ / arduino-cmake-master
מאוחר יותר אני מבצע:
> $ mingw32-make ... קישור ספרייה סטטית CXX libuno_WiFi.a [89%] יעד בנוי uno_WiFi תלות סריקה של wifi_example היעד
[92%] בניית דוגמא של אובייקט CXX / CMakeFiles / wifi_example.dir / wifi_example_WiFiWebClient.cpp.obj קישור הפעלה CXX wifi_example.elflibuno_WiFi.a (WiFiClient.cpp.obj): בפונקציה 'WiFiClient :: status ()': C: \ Program קבצים \ Arduino \ ספריות \ WiFi / WiFiClient.cpp: 160: התייחסות לא מוגדרת ל- 'ServerDrv :: getClientState (char un חתום)' libuno_WiFi.a (WiFiClient.cpp.obj): בפונקציה 'WiFiClient :: stop ()': C : \ Program Files \ Arduino \ ספריות \ WiFi / WiFiClient.cpp: 131: התייחסות לא מוגדרת ל- 'ServerDrv :: stopClient (char לא חתום)' libuno_WiFi.a (WiFiClient.cpp.obj): בפונקציה 'WiFiClient :: הצצה () ': C: \ Program Files \ Arduino \ ספריות \ WiFi / WiFiClient.cpp: 117: התייחסות לא מוגדרת ל-' ServerDrv :: getData (char לא חתום, char לא חתום *, char לא חתום) 'libuno_WiFi.a (WiFiClient.cpp.obj) : בפונקציה 'WiFiClient :: read ()': C: \ Program Files \ Arduino \ libraries \ WiFi / WiFiClient.cpp: 101: התייחסות לא מוגדרת ל 'ServerDrv :: getData (char לא חתום, char לא חתום *, char לא חתום)' libuno_WiFi.a (WiFiClient.cpp.obj): בפונקציה 'WiFiClient :: read (לא חתום *, לא חתום int)': C: \ Program Files \ Arduino \ libraries \ WiFi / WiFiClient.cpp: 107: התייחסות לא מוגדרת ל- `ServerDrv :: getDataBuf (char לא חתום, char לא חתום *, לא חתום int *) 'libuno_WiFi.a (WiFiClient.cpp.obj): בפונקציה' WiFiClient :: זמין () ': C: \ Program Files \ Arduino \ ספריות \ WiFi / WiFiClient.cpp: 90: התייחסות לא מוגדרת ל- `ServerDrv: : availData (char charged) 'libuno_WiFi.a (WiFiClient.cpp.obj): בפונקציה' WiFiClient :: כתוב (char const * לא חתום, int int חתום) ': C: \ Program Files \ Arduino \ libraries \ WiFi / WiFiClient. cpp: 73: התייחסות לא מוגדרת ל- `ServerDrv :: sendData (char לא חתום, const char לא חתום *, int חתום) 'C: \ Program Files \ Arduino \ ספריות \ WiFi / WiFiClient.cpp: 78: התייחסות לא מוגדרת ל-` ServerDrv :: checkDataSent (char charged) 'libuno_WiFi.a (WiFiClient.cpp.obj): בפונקציה' WiFiClient :: connect (IPAddress, int חתום) ':
C: \ Program Files \ Arduino \ ספריות \ WiFi / WiFiClient.cpp: 36: התייחסות לא מוגדרת ל- `ServerDrv :: startClient (לא חתום ארוך, לא חתום, char לא חתום, char לא חתום) 'libuno_WiFi.a (WiFi.cpp.obj) : בפונקציה 'WiFiClass :: hostByName (char const *, IPAddress&)': C: \ Program Files \ Arduino \ ספריות \ WiFi / WiFi.cpp: 228: התייחסות לא מוגדרת ל- 'WiFiDrv :: getHostByName (char const *, IPAddress&) 'libuno_WiFi.a (WiFi.cpp.obj): בפונקציה' WiFiClass :: status () ': C: \ Program Files \ Arduino \ ספריות \ WiFi / WiFi.cpp: 223: התייחסות לא מוגדרת ל- `WiFiDrv :: getConnectionStatus ( ) 'libuno_WiFi.a (WiFi.cpp.obj): בפונקציה' WiFiClass :: RSSI () ': C: \ Program Files \ Arduino \ ספריות \ WiFi / WiFi.cpp: 181: התייחסות לא מוגדרת ל-' WiFiDrv :: getCurrentRSSI () 'libuno_WiFi.a (WiFi.cpp.obj): בפונקציה' WiFiClass :: SSID () ': C: \ Program Files \ Arduino \ ספריות \ WiFi / WiFi.cpp: 169: התייחסות לא מוגדרת ל-' WiFiDrv :: getCurrentSSID () 'libuno_WiFi.a (WiFi.cpp.obj): בפונקציה' WiFiClass :: localIP () ': C: \ Program Files \ Arduino \ libr טלה \ WiFi / WiFi.cpp: 149: התייחסות לא מוגדרת ל- 'WiFiDrv :: getIpAddress (IPAddress&)' libuno_WiFi.a (WiFi.cpp.obj): בפונקציה 'WiFiClass :: start (char *, char const *)': C: \ Program Files \ Arduino \ ספריות \ WiFi / WiFi.cpp: 87: התייחסות לא מוגדרת ל- 'WiFiDrv :: wifiSetPassphrase (char *, char לא חתום, char const *, char לא חתום)' C: \ Program Files \ Arduino \ ספריות \ WiFi / WiFi.cpp: 92: התייחסות לא מוגדרת ל- 'WiFiDrv :: getConnectionStatus ()' libuno_WiFi.a (WiFi.cpp.obj): בפונקציה 'WiFiClass :: init ()': C: \ Program Files \ Arduino \ ספריות \ WiFi / WiFi.cpp: 22: התייחסות לא מוגדרת ל- 'WiFiDrv :: wifiDriverInit ()' דוגמא \ CMakeFiles \ wifi_example.dir \ build.make: 95: מתכון למטרה 'דוגמה / wifi_example.elf' נכשלה w32-make [2 ]: *** [דוגמה / wifi_example.elf] שגיאה 1CMakeFiles \ Makefile2: 748: מתכון למטרה 'example / CMakeFiles / wifi_example.dir / all' failedmingw32-make [1]: *** [דוגמה / CMakeFiles / wifi_example. dir / all] שגיאה 2 Makefile: 74: מתכון למטרה 'הכל' נכשלה w32-make: *** [הכל] שגיאה 2
הבעיה היא ה- Arduino.cmake מכיוון שהוא לא מקשר כהלכה עם ה- WiFi של הספרייה, אבל הוא מקשר עם ספריית Wire.
מישהו יודע מדוע האזהרה הזו מופיעה ו מדוע Wire מקשר בסדר אבל WiFi לא?
תודה!
הערה : אני משתמש בקוד מקורי שנמצא בדוגמת המאגר, אני ' לא שינינו את זה.