สร้าง 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
เชนเครื่องมือ Gcc 4.6
เป้าหมาย Arm-unknown-linux-android
armv7-unknown-linux-android
i386-unknown-linux-android

Mac OS X

ข้อกําหนด: XQuartz สําหรับการคัดลอกแผนผังย่อยไดเรกทอรีหนึ่งไปยังอีกไดเรกทอรีหนึ่งที่มีลิงก์สัญลักษณ์
C/C++ การเชื่อมโยงโกโก้
เป้าหมาย 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

หน้าต่าง

ข้อกําหนด: Cygwin สําหรับบรรทัดคําสั่งบรรทัดคําสั่ง Linux
การเชื่อมโยง C/C++
เชนเครื่องมือ Gcc 4.8.3
เป้าหมาย i686-pc-cygwin

แบบฝัง

การเชื่อมโยง C/C++
เชนเครื่องมือ gcc 4.4.1
LLVM/clang 3.1
LLVM/clang 3.3
เป้าหมาย กลุ่ม*-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

sudo apt-get install libtool autoconf automake

สําหรับระบบที่ GNU Autotools ไม่พร้อมให้บริการหรือติดตั้งได้ (เช่น Mac OS) หรือในระบบที่ไม่มีเวอร์ชันบิลด์ของระบบอยู่แล้ว Nest Labs ได้สร้างเฟรมเวิร์กระบบบิลด์ที่ปรับแต่งเองโดยอิงตาม GNU Autotools ระบบจะปักหมุดชุดโปรแกรมที่ใช้ในการสร้างบิลด์เป็นเวอร์ชันที่ดีที่ทราบ การปักหมุดเครื่องมือเป็นเวอร์ชันที่เจาะจงจะทําให้เอาต์พุตของเครื่องมืออัตโนมัติลดลงอย่างมาก ซึ่งนําไปสู่ประสบการณ์สําหรับนักพัฒนาซอฟต์แวร์และการสนับสนุนที่คาดเดาได้ เราขอแนะนําให้ใช้บิลด์ GNU Autotools ในการสร้าง Nest Lab เพื่อใช้กับ OpenWeave

วิธีสร้างเครื่องมืออัตโนมัติ GNU ของ Nest Labs

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

มีความสุข

ในการเรียกใช้สคริปต์การทดสอบที่รวมอยู่ใน OpenWeave หรือใช้ Weave ในโทโพโลยีจําลอง ให้ติดตั้ง Happy บนเครื่อง Linux ดูข้อมูลเพิ่มเติมได้ที่การตั้งค่าอย่างมีความสุข

แอปพลิเคชันแบบสแตนด์อโลน

ใช้แอปพลิเคชัน 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.ac หรือ Makefile.am หลังจากนั้น ไม่จําเป็นต้องทําซ้ําเมื่อเปลี่ยนการกําหนดค่าหรือเป้าหมายบิวด์

สคริปต์

ใช้แฟล็ก --help ที่มีสคริปต์การกําหนดค่าที่ให้มาเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกที่กําหนดค่าได้

./configure --help

เช่น ในการกําหนดค่า OpenWeave โดยไม่มีการรองรับ BlueZ ให้ทําดังนี้

./configure --without-bluez

ส่วนหัว

Makefiles ที่รวมอยู่จะใช้ไฟล์ส่วนหัว 2 ไฟล์ที่กําหนดค่าคงที่ในเวลาคอมไพล์:

และอาจระบุส่วนหัวการกําหนดค่าเฉพาะโครงการไว้ด้วย วางไฟล์เหล่านี้ลงในไดเรกทอรีโปรเจ็กต์ โปรดอย่าวางไว้ในที่เก็บของ OpenWeave ใช้ตัวเลือกการกําหนดค่าที่เหมาะสมเพื่อระบุตําแหน่งแต่ละไฟล์ระหว่างการกําหนดค่า ดังนี้

ไฟล์ส่วนหัว ตัวเลือกการกําหนดค่า
InetProjectConfig.h --with-weave-inet-project-includes=<directory>
WeaveProjectConfig.h --with-weave-project-includes=<directory>

เช่น หากต้องการกําหนดค่า OpenWeave ให้ใช้ไฟล์ WeaveProjectConfig.h เฉพาะโปรเจ็กต์ที่อยู่ใน ~/my-project/headers

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