构建 OpenWeave

用于构建 OpenWeave 的主要工具链是 GNU Autotools。

系统要求

所有主要的操作系统平台都支持构建和交叉编译 OpenWeave。列出的工具链已经过 Nest 正式测试。

Linux

要求:官方支持 Ubuntu 14.04 (Trusty),但任何类似的 Linux 系统都应该可以正常运行。
C/C++、Java、Python 绑定
工具链 gcc 4.6.3
目标 i386-unknown-linux-gnu
x86_64-unknown-linux-gnu
C/C++、Java 绑定
工具链 GCC4.6
目标 arm-unknown-linux-android
armv7-unknown-linux-android
i386-unknown-linux-android

Mac OS X

要求:使用符号链接将一个目录子树克隆到另一个目录子树中。
C/C++、Cocoa 绑定
目标 armv7-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++ 绑定
工具链 gcc 4.8.3
目标 i686-pc-cygwin

Embedded

C/C++ 绑定
工具链 gcc 4.4.1
LLVM/clang 3.1
LLVM/clang 3.3
目标 arm*-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 Autotools 才能成功构建 OpenWeave。如需在 Linux 上使用系统提供的 Autotools 版本,请执行以下操作:

sudo apt-get install libtool autoconf automake

对于 GNU Autotools 不容易提供或无法安装的系统(例如 Mac OS),或者在系统提供的版本没有提供可靠的开箱即用型生成系统,Nest Labs 根据 GNU Autotools 创建了一个定制的一站式构建系统框架。系统会将 build 生成中使用的一组程序固定为已知的良好版本。将工具固定到特定版本还可以确保自动工具输出的相对低流失率,从而实现可预测的开发者和支持体验。建议将 GNU Autotools 的 Nest Labs build 与 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 Standalone 应用。

  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 之前,请使用自动工具引导相关的构建文件:

./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