建構 OpenWeave

建構 OpenWeave 的主要工具鍊是 GNU Autotools。

系統需求

所有主要的 OS 平台都支援建構和交叉編譯 OpenWeave。所列工具鍊已通過 Nest 正式測試。

Linux

需求:官方支援 Ubuntu 14.04 (Trusty),但任何類似的 Linux 系統皆可運作。
C/C++、Java、Python 繫結
工具鏈 4.6.3 gcc
目標 i386-unknown-linux-gnu
x86_64-unknown-linux-gnu
C/C++、Java 繫結
工具鏈 gcc 4.6
目標 Armor-unknown-linux-android
armv7-unknown-linux-android
i386-unknown-linux-android

Mac OS X

需求條件:XQuartz,用於複製具有目錄連結的另一個目錄樹狀子目錄。
C/C++、可可繫結
目標 Armorv7-apple-darwin-ios
armv7s-apple-darwin-ios
i386-apple-darwin-ios
C/C++、Python 繫結
工具鏈 LLVM/clang 3.5 (6.0)
目標 i386-apple-darwin-macosx
x86_64-apple-darwin-macosx

Windows

需求:Cygwin 支援 Linux 指令列。
C/C++ 繫結
工具鏈 4.8.3 gcc
目標 i686-pc-cygwin

內嵌

C/C++ 繫結
工具鏈 gcc 4.4.1
LLVM/clang 3.1
LLVM/clang 3.3
目標 Armor*-unknown-linux*
arm*-unknown-freertos-lwip

必要條件

除了支援的工具鍊之外,我們建議您先安裝下列套件和工具,再建構 OpenWeave。

檔案包

Linux:

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

Linux 和 Mac OS X:

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

GNU 自動工具

OpenWeave 依賴 GNU Autotools 打造建構系統。必須提供 GNU 版本的自動工具,才能成功建構 OpenWeave。如何在 Linux 上使用系統提供的 Autotools:

sudo apt-get install libtool autoconf automake

對於 GNU Autotools 尚未取得或可安裝的系統 (例如 Mac OS),或是系統提供的版本未提供穩定版建構的系統,Nest Labs 會根據 GNU Autotools 建立自訂的自訂建構系統架構。系統會將建立版本中使用的程式集固定在已知的良好版本中。將工具固定在特定版本,也可確保自動化工具的輸出量相對較低,進而導致開發人員和支援體驗出現可預測。建議搭配 GWeU Autotools 建構的 Nest Labs 版本,以便搭配 OpenWeave 使用。

如何建構 Nest Labs GNU Autotools:

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

歡樂

如要執行 OpenWeave 中的測試指令碼,或是在模擬拓撲中使用 Weave,請在 Linux 電腦上安裝「Happy」。詳情請參閱快樂設定

獨立應用程式

針對桌面或伺服器開發主機,使用預設的 OpenWeave 獨立應用程式。

  1. 複製 OpenWeave 存放區:
    git clone https://github.com/openweave/openweave-core.git
  2. 建構 OpenWeave 獨立應用程式:
    cd openweave-core
    make -f Makefile-Standalone

使用 help 旗標搭配 Makefile-Standalone 來瞭解哪些建構開關可以進行建構自訂。

make -f Makefile-Standalone help

舉例來說,如何啟用 Weave 偵錯程式碼和記錄:

make -f Makefile-Standalone DEBUG=1

專案連結

  1. 複製 OpenWeave 存放區:
    git clone https://github.com/openweave/openweave-core.git
  2. 設定 GNU Autotools 的建構環境:
    cd openweave-core
    ./bootstrap
    ./configure
  3. 建構 OpenWeave:
    make all
  4. 將輸出暫存至不同的專案連結位置:
    mkdir <openweave-output>
    make DESTDIR=<openweave-output> install

暫存後,請使用 <openweave-output> 下的目錄來連結專案:

  • /usr/local/include - 公開標頭
  • /usr/local/lib - 程式庫

Android 與 iOS 裝置

如要建構 Android 和 iOS 專案連結的程式庫,請使用平台專用的 Makefiles

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

help 標記與 Makefile-<platform> 搭配使用,即可瞭解哪些建構開關可用來自訂建構作業。例如:

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

設定

使用各種指令碼和標頭設定 OpenWeave 之前,請使用 Autotools 啟動相關建構檔案:

./bootstrap

請在結帳後執行這個步驟一次,之後也需變更 configure.acMakefile.am。只需要變更建構設定或目標時,就不需要重複執行此動作。

指令碼

使用 --help 標記搭配內含的設定指令碼,進一步瞭解可設定的選項。

./configure --help

例如,在沒有 BlueZ 支援的情況下設定 OpenWeave:

./configure --without-bluez

標頭

包含的 Makefiles 會使用兩個標頭檔案,在編譯時間定義常數:

也可以提供專案專屬的設定標頭。請將這些檔案放置在您的專案目錄中,切勿將檔案放在 OpenWeave 存放區內。在設定過程中使用適當的設定選項指定每個檔案的位置:

標頭檔案 設定選項
InetProjectConfig.h --with-weave-inet-project-includes=<directory>
WeaveProjectConfig.h --with-weave-project-includes=<directory>

例如,如要將 OpenWeave 設定為使用位於 ~/my-project/headers 的專案專屬 WeaveProjectConfig.h 檔案:

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