Estoy tratando de crear un ejemplo de Arduino sin usar su IDE. Mi sistema operativo es Windows 8.1 y estoy usando la última versión de CMake (2.8.12.2) y MinGW (GNU Make 3.82.90) .
Descargué Arduino CMakeLists y aprendí todo sobre hacer / cargar
cualquier firmware en mi Arduino. Estoy usando Arduino UNO .
Entonces, si modifico las CMakeLists guardadas en ~ / arduino-cmake-master / example / CMakeLists.txt
( arduino-cmake-master es la carpeta del repositorio) para construir el ejemplo de WiFi WiFiWebClient también:
... # Agrega el ejemplo de WiFi -> WiFiWebClientgenerate_arduino_example (wifi_example LIBRARY WiFi EXAMPLE WiFiWebClient) ...
Y ejecuta:
$ cmake -G "MinGW Makefiles" ... CMake Advertencia (dev) en example / CMakeLists.txt: La política CMP0022 no está establecida: INTERFACE_LINK_LIBRARIES define la interfaz de enlace. Ejecute "cmake --help-policy CMP0022" para obtener detalles sobre la política. Utilice el comando cmake_policy para establecer la política y suprimir esta advertencia. El destino "uno_example" tiene una propiedad INTERFACE_LINK_LIBRARIES. Esto debería preferirse como fuente de la interfaz de enlace para esta biblioteca, pero debido a que CMP0022 no está configurado, CMake ignora la propiedad y utiliza la implementación del enlace como interfaz de enlace. INTERFACE_LINK_LIBRARIES: uno_CORE; uno_example; uno_Wire Implementación del enlace: uno_CORE; uno_Wire Esta advertencia es para desarrolladores de proyectos. Utilice -Wno-dev para suprimirlo. Haga una advertencia (dev) en example / CMakeLists.txt: La política CMP0022 no está establecida: INTERFACE_LINK_LIBRARIES define la interfaz de enlace. Ejecute "cmake --help-policy CMP0022" para obtener detalles sobre la política. Utilice el comando cmake_policy para establecer la política y suprimir esta advertencia. El destino "uno_Wire" tiene una propiedad INTERFACE_LINK_LIBRARIES. Esto debería ser
preferido como el origen de la interfaz de enlace para esta biblioteca, pero debido a que CMP0022 no está configurado, CMake ignora la propiedad y utiliza la implementación del enlace como interfaz de enlace. INTERFACE_LINK_LIBRARIES: uno_CORE; uno_Wire Link Implementación: uno_CORE Esta advertencia es para los desarrolladores de proyectos. Utilice -Wno-dev para suprimirlo. Haga una advertencia (dev) en example / CMakeLists.txt: La política CMP0022 no está establecida: INTERFACE_LINK_LIBRARIES define la interfaz de enlace. Ejecute "cmake --help-policy CMP0022" para obtener detalles sobre la política. Utilice el comando cmake_policy para establecer la política y suprimir esta advertencia. El destino "uno_SPI" tiene una propiedad INTERFACE_LINK_LIBRARIES. Esto debería preferirse como fuente de la interfaz de enlace para esta biblioteca, pero debido a que CMP0022 no está configurado, CMake ignora la propiedad y utiliza la implementación de enlace como interfaz de enlace. INTERFACE_LINK_LIBRARIES: uno_CORE; uno_SPI Implementación del enlace: uno_CORE Esta advertencia es para los desarrolladores de proyectos. Utilice -Wno-dev para suprimirlo. Haga una advertencia (dev) en example / CMakeLists.txt: La política CMP0022 no está establecida: INTERFACE_LINK_LIBRARIES define la interfaz de enlace. Ejecute "cmake --help-policy CMP0022" para obtener detalles sobre la política. Utilice el comando cmake_policy para establecer la política y suprimir esta advertencia. El objetivo "uno_WiFi" tiene una propiedad INTERFACE_LINK_LIBRARIES. Esto debería preferirse como fuente de la interfaz de enlace para esta biblioteca, pero debido a que CMP0022 no está configurado, CMake ignora la propiedad y utiliza la implementación de enlace como interfaz de enlace. INTERFACE_LINK_LIBRARIES: uno_CORE; uno_WiFi Link Implementación: uno_CORE Esta advertencia es para desarrolladores de proyectos. Use -Wno-dev para suprimirlo .-- Generando hecho-- Los archivos de compilación se han escrito en: ~ / arduino-cmake-master
Luego ejecuto:
$ mingw32-make ... Vinculando la biblioteca estática CXX libuno_WiFi.a [89%] Construyó el objetivo uno_WiFiScanning dependencias del objetivo wifi_example
[92%] Ejemplo de objeto de construcción CXX / CMakeFiles / wifi_example.dir / wifi_example_WiFiWebClient.cpp.objLink CXX ejecutable wifi_example.elflibuno_WiFi.a (WiFiClient.cpp.obj): En función `WiFiClient :: status () ': C: \ Programa Archivos \ Arduino \ libraries \ WiFi / WiFiClient.cpp: 160: referencia indefinida a `ServerDrv :: getClientState (unsigned char) 'libuno_WiFi.a (WiFiClient.cpp.obj): En función` WiFiClient :: stop ()': C : \ Archivos de programa \ Arduino \ libraries \ WiFi / WiFiClient.cpp: 131: referencia indefinida a `ServerDrv :: stopClient (unsigned char) 'libuno_WiFi.a (WiFiClient.cpp.obj): En función` WiFiClient :: peek () ': C: \ Archivos de programa \ Arduino \ libraries \ WiFi / WiFiClient.cpp: 117: referencia indefinida a `ServerDrv :: getData (unsigned char, unsigned char *, unsigned char)' libuno_WiFi.a (WiFiClient.cpp.obj) : En la función `WiFiClient :: read () ': C: \ Archivos de programa \ Arduino \ libraries \ WiFi / WiFiClient.cpp: 101: referencia indefinida a` ServerDrv :: getData (unsigned char, unsigned char *, unsigned char)' libuno_WiFi.a (WiFiClient.cpp.obj): En función `WiFiClient :: read (unsigned char *, unsigned int) ': C: \ Archivos de programa \ Arduino \ libraries \ WiFi / WiFiClient.cpp: 107: referencia no definida a` ServerDrv :: getDataBuf (unsigned char, unsigned char *, unsigned int *) 'libuno_WiFi.a (WiFiClient.cpp.obj): En la función `WiFiClient :: available ()': C: \ Program Files \ Arduino \ libraries \ WiFi / WiFiClient.cpp: 90: referencia indefinida a` ServerDrv: : availData (unsigned char) 'libuno_WiFi.a (WiFiClient.cpp.obj): En la función `WiFiClient :: write (unsigned char const *, unsigned int)': C: \ Program Files \ Arduino \ libraries \ WiFi / WiFiClient. cpp: 73: referencia indefinida a `ServerDrv :: sendData (unsigned char, unsigned char const *, unsigned int) 'C: \ Program Files \ Arduino \ libraries \ WiFi / WiFiClient.cpp: 78: referencia indefinida a` ServerDrv :: checkDataSent (carácter sin firmar) 'libuno_WiFi.a (WiFiClient.cpp.obj): En la función `WiFiClient :: connect (IPAddress, unsigned int)':
C: \ Program Files \ Arduino \ libraries \ WiFi / WiFiClient.cpp: 36: referencia indefinida a `ServerDrv :: startClient (unsigned long, unsigned int, unsigned char, unsigned char) 'libuno_WiFi.a (WiFi.cpp.obj) : En la función `WiFiClass :: hostByName (char const *, IPAddress&) ': C: \ Archivos de programa \ Arduino \ libraries \ WiFi / WiFi.cpp: 228: referencia indefinida a` WiFiDrv :: getHostByName (char const *, IPAddress&) 'libuno_WiFi.a (WiFi.cpp.obj): En la función `WiFiClass :: status ()': C: \ Archivos de programa \ Arduino \ libraries \ WiFi / WiFi.cpp: 223: referencia no definida a` WiFiDrv :: getConnectionStatus ( ) 'libuno_WiFi.a (WiFi.cpp.obj): En la función `WiFiClass :: RSSI ()': C: \ Archivos de programa \ Arduino \ libraries \ WiFi / WiFi.cpp: 181: referencia no definida a` WiFiDrv :: getCurrentRSSI () 'libuno_WiFi.a (WiFi.cpp.obj): En la función `WiFiClass :: SSID ()': C: \ Archivos de programa \ Arduino \ libraries \ WiFi / WiFi.cpp: 169: referencia no definida a` WiFiDrv :: getCurrentSSID () 'libuno_WiFi.a (WiFi.cpp.obj): En función `WiFiClass :: localIP ()': C: \ Archivos de programa \ Arduino \ libr aries \ WiFi / WiFi.cpp: 149: referencia indefinida a `WiFiDrv :: getIpAddress (IPAddress&) 'libuno_WiFi.a (WiFi.cpp.obj): En función` WiFiClass :: begin (char *, char const *)': C: \ Archivos de programa \ Arduino \ libraries \ WiFi / WiFi.cpp: 87: referencia indefinida a `WiFiDrv :: wifiSetPassphrase (char *, unsigned char, char const *, unsigned char) 'C: \ Program Files \ Arduino \ libraries \ WiFi / WiFi.cpp: 92: referencia indefinida a `WiFiDrv :: getConnectionStatus () 'libuno_WiFi.a (WiFi.cpp.obj): En función` WiFiClass :: init ()': C: \ Archivos de programa \ Arduino \ libraries \ WiFi / WiFi.cpp: 22: referencia no definida a `WiFiDrv :: wifiDriverInit () 'example \ CMakeFiles \ wifi_example.dir \ build.make: 95: receta para el objetivo' example / wifi_example.elf 'failedmingw32-make [2 ]: *** [ejemplo / wifi_example.elf] Error 1CMakeFiles \ Makefile2: 748: receta para el objetivo 'ejemplo / CMakeFiles / wifi_example.dir / all' failedmingw32-make [1]: *** [ejemplo / CMakeFiles / wifi_example. dir / all] Error 2Makefile: 74: la receta para el objetivo 'todos' falló w32-make: *** [todos] Error 2
El problema es Arduino.cmake porque no se vincula correctamente con la biblioteca WiFi, pero se vincula con la biblioteca Wire.
Cualquiera sabe por qué aparece esa advertencia y ¿Por qué los enlaces Wire están bien pero WiFi no?
¡Gracias!
Nota : Estoy usando el código original que está en el ejemplo del repositorio, I no he modificado este.