OpenWeave erstellen

Die primäre unterstützte Toolchain zum Erstellen von OpenWeave ist GNU Autotools.

Systemanforderungen

Alle gängigen Betriebssystemplattformen unterstützen das Erstellen und Cross-Kompilierung von OpenWeave. Die aufgeführten Toolchains wurden offiziell von Nest getestet.

Linux

Anforderungen:Ubuntu 14.04 (Trusty) wird offiziell unterstützt, aber alle ähnlichen Linux-basierten Systeme sollten funktionieren.
C/C++, Java, Python-Bindungen
Toolchains GCC 4.6.3
Ziele i386-unknown-linux-gnu
x86_64-unknown-linux-gnu
C/C++, Java-Bindungen
Toolchains GCC 4.6
Ziele arm-unknown-linux-android
armv7-unknown-linux-android
i386-unknown-linux-android.

Mac OS X

Anforderungen:XQuartz zum Klonen einer Verzeichnis-Unterstruktur auf eine andere mit symbolischen Links.
C/C++, Kakaonbindungen
Ziele armv7-apple-darwin-ios
armv7s-apple-darwin-ios
i386-apple-darwin-ios
C/C++, Python-Bindungen
Toolchains LLVM/clang 3.5 (6.0)
Ziele i386-apple-darwin-macosx
x86_64-apple-darwin-macosx

Windows

Anforderungen:Cygwin für die Linux-Befehlszeile.
C/C++-Bindungen
Toolchains GCC 4.8.3
Ziele i686-pc-cygwin

Eingebettet

C/C++-Bindungen
Toolchains gcc 4.4.1
LLVM/clang 3.1
LLVM/clang 3.3
Ziele arm*-unknown-linux*
arm*-unknown-freertos-lwip

Vorbereitung

Zusätzlich zu einer unterstützten Toolchain empfehlen wir, die folgenden Pakete und Tools zu installieren, bevor Sie OpenWeave erstellen.

Pakete

Linux:

sudo apt-get install python-pip python-setuptools bridge-utils /
               libglib2.0-dev libdbus-1-dev libudev-dev /
               libical-dev libreadline-dev

Linux und Mac OS X:

pip install --user google-cloud googleapis-common-protos grpc protobuf pycryptodomex
sudo cpan -i Text::Template

GNU Autotools

OpenWeave hängt von GNU Autotools für sein Build-System ab. Für die erfolgreiche Erstellung von OpenWeave muss eine Version von GNU Autotools verfügbar sein. So verwenden Sie die vom System bereitgestellte Version der Autotools unter Linux:

sudo apt-get install libtool autoconf automake

Für Systeme, bei denen die GNU Autotools nicht leicht verfügbar oder installierbar sind (z. B. Mac OS) oder auf Systemen, in denen die vom System bereitgestellte Version keine feste Build-Generation bietet, wurde ein benutzerdefiniertes, einsatzbereites Build-System-Framework basierend auf GNU Autotools erstellt. Das System angepinnt die zum Erstellen der Generierung verwendeten Programme auf eine bekannte fehlerfreie Version. Durch das Anpinnen der Tools an eine bestimmte Version wird außerdem eine relativ niedrige Abwanderung bei der Ausgabe von Autotools gewährleistet, was zu einer vorhersehbaren Entwickler- und Supporterfahrung führt. Die Verwendung von Nest Labs von GNU Autotools wird für die Verwendung mit OpenWeave empfohlen.

So erstellen Sie GNU Autotools für Nest Labs:

git clone https://github.com/openweave/openweave-core.git
cd openweave-core
make -C third_party/nlbuild-autotools/repo/ tools

Fröhlich

Installieren Sie Happy auf Ihrem Linux-Computer, um die in OpenWeave enthaltenen Testskripts auszuführen oder Weave in simulierten Topologien zu verwenden. Weitere Informationen findest du unter Happy Setup.

Eigenständige Anwendung

Verwenden Sie die standardmäßige eigenständige OpenWeave-Anwendung für einen Desktop- oder Serverentwicklungshost.

  1. Klonen Sie das OpenWeave-Repository:
    git clone https://github.com/openweave/openweave-core.git
  2. Erstellen Sie die eigenständige App „OpenWeave“:
    cd openweave-core
    make -f Makefile-Standalone

Verwenden Sie das Flag help mit Makefile-Standalone, um zu erfahren, welche Build-Schalter für die Build-Anpassung verfügbar sind.

make -f Makefile-Standalone help

So aktivieren Sie beispielsweise Weave-Debug-Code und -Protokollierung:

make -f Makefile-Standalone DEBUG=1

Projektverknüpfung

  1. Klonen Sie das OpenWeave-Repository:
    git clone https://github.com/openweave/openweave-core.git
  2. Konfigurieren Sie die Build-Umgebung für GNU Autotools:
    cd openweave-core
    ./bootstrap
    ./configure
  3. Erstellen Sie OpenWeave:
    make all
  4. Stellen Sie die Ausgabe an einem separaten Speicherort für die Projektverknüpfung bereit:
    mkdir <openweave-output>
    make DESTDIR=<openweave-output> install

Nach dem Staging verwenden Sie die Verzeichnisse unter <openweave-output> für die Projektverknüpfung:

  • /usr/local/include – öffentliche Header
  • /usr/local/lib – Bibliotheken

Android- und iOS-Geräte

Verwende zum Erstellen von Bibliotheken für Android- und iOS-Projekte die plattformspezifische Makefiles:

make -f Makefile-Android
make -f Makefile-iOS

Verwenden Sie das Flag help mit Makefile-<platform>, um zu erfahren, welche Build-Schalter für die Build-Anpassung verfügbar sind. Beispiel:

make -f Makefile-Android help
make -f Makefile-iOS help

Konfiguration

Bevor Sie OpenWeave mit verschiedenen Skripts und Headern konfigurieren, können Sie mit den Autotools die relevanten Build-Dateien per Bootstrahl speichern:

./bootstrap

Dieser Schritt muss einmal, nach einer Baumstruktur und dann bei Änderungen an configure.ac oder Makefile.am ausgeführt werden. Er muss nicht wiederholt werden, wenn Sie einfach Build-Konfigurationen oder Ziele ändern.

Skripts

Verwenden Sie das Flag --help mit dem enthaltenen Konfigurationsskript, um mehr über konfigurierbare Optionen zu erfahren.

./configure --help

So konfigurieren Sie beispielsweise OpenWeave ohne BlueZ-Unterstützung:

./configure --without-bluez

Header

Das enthaltene Makefiles verwendet zwei Headerdateien, die Konstanten zur Kompilierungszeit definieren:

Projektspezifische Konfigurationsheader können auch bereitgestellt werden. Legen Sie diese Dateien im Projektverzeichnis ab, nicht in das OpenWeave-Repository. Verwenden Sie die entsprechende Konfigurationsoption, um den Standort jeder Datei während der Konfiguration anzugeben:

Headerdatei Konfigurationsoption
InetProjectConfig.h --with-weave-inet-project-includes=<directory>
WeaveProjectConfig.h --with-weave-project-includes=<directory>

So konfigurieren Sie beispielsweise OpenWeave, um eine projektspezifische WeaveProjectConfig.h-Datei in ~/my-project/headers zu verwenden:

./configure --with-weave-project-includes=~/my-project/headers