บังคับ:
ไม่จำเป็น:
ตัวอย่างนี้สันนิษฐานว่าคุณได้ติดตั้ง Python 3 และ Scons เวอร์ชันล่าสุด นอกจากนี้ยังเป็นไปได้ที่จะสร้างห้องสมุดของเราโดยไม่ต้องใช้ scons โดยใช้ makefile เนื่องจาก Scons เป็นเครื่องมือสร้างหลักของเราเองเราจึงอธิบายวิธีการของ Scons ที่นี่
โคลนที่เก็บจาก https://gitlab.com/pi-lar/neuropil (เวอร์ชันการพัฒนา) หรือ https://github.com/pi-lar/neuropil (กระจก) ด้วย Git
ซีดีลงในโฟลเดอร์และสร้างรหัสด้วย scons
ก่อนอื่นให้คำสั่ง
git submodule init
ตามด้วย
git submodule update
สร้างในโหมดดีบักด้วย:
scons -C build -f ../SConstruct --DEBUG
หรือในโหมดปล่อยด้วย:
scons -C build -f ../SConstruct --RELEASE
สร้างเอกสาร (จำเป็นต้องติดตั้งสฟิงซ์):
scons -C build -f ../SConstruct doc=1
สร้างการทดสอบ (จำเป็นต้องติดตั้งเกณฑ์):
scons -C build -f ../SConstruct tests
ทำความสะอาด/ลบโครงการ:
scons -C build -f ../SConstruct -c
นอกจากนี้ยังมี MakeFile แต่เส้นทาง Infos บางเส้นทางเป็นรหัสที่ยากและจำเป็นต้องปรับให้เข้ากับสภาพแวดล้อมของคุณ MakeFile ส่วนใหญ่จะใช้ในการเรียกใช้เครื่องมือการสแกน LLVM สำหรับการวิเคราะห์รหัสแบบคงที่และสำหรับการฟัซซิง
ไฟล์ CMake เป็นร่างแรกเริ่มต้นและสามารถสร้างไลบรารีได้ แต่ไม่ใช่โปรแกรมตัวอย่าง
ไม่มี autoconf จนถึงตอนนี้ที่จะทำ
NeuroPil มีให้สำหรับระบบนิเวศของ NIX ซึ่งให้การสร้างที่ทำซ้ำได้ของห้องสมุดและสภาพแวดล้อมการพัฒนาที่สะอาด
โครงการนี้มาเป็นเกล็ด nix แต่มาพร้อมกับ wrappers สำหรับ nix < 3.x
มันมีแพ็คเกจต่อไปนี้:
แม้ว่านี่อาจ ไม่ใช่ สิ่งที่คุณต้องการทำ (ดูหัวข้อถัดไป) การสร้างแพ็คเกจแต่ละอันทำงานดังนี้:
| สั่งการ | คำอธิบาย |
|---|---|
nix build ./ | สร้างไลบรารีและไฟล์ส่วนหัว |
nix build ./#packages.x86_64-{darwin,linux}.neuropil_{python,luajit} | สร้างโมดูล Python หรือโมดูล LUA ตามลำดับ |
nix develop หรือ nix-shell -A devShell.x86_64-{darwin,linux} | เปิดเปลือกหอยด้วย libneuropil บน LDPATH และ lua/python การผูกที่มีอยู่ ใช้สิ่งนี้เพื่อสร้างแหล่ง C ด้วยตนเอง (เช่น $CC examples/neuropil_sender.c -lneuropil ) |
nix shell ./#packages.x86_64-{darwin,linux}.libneuropil | เปิดเปลือกหอยที่มีการพึ่งพาของ Neuropil ช่วยให้เวิร์กโฟลว์ทั่วไปโดยใช้ scons --DEBUG และ scons --RELEASE ปล่อย |
ในการเปิดเชลล์/สร้างไลบรารีโดยไม่โคลนที่เก็บโดยใช้ nix flakes แทนที่ ./ โดย git+<url to repo> หรือ gitlab:pi-lar/neuropil สำหรับสาขาล่าสุด
ในกรณีส่วนใหญ่แม้ว่าคุณจะต้องการรวม neuropil เข้ากับโครงการของคุณโดยใช้ Nix ในการทำให้ Neuropil เป็นส่วนหนึ่งของแอปพลิเคชันของคุณคุณสามารถนำเข้าเกล็ดและเพิ่มการซ้อนทับลงในชุดแพ็คเกจของคุณเช่นนี้เช่น:
{ nixpkgs } :
let
// add rev = . . . to point to a specific version
neuropil = import ( fetchGit { url = "https://gitlab.com/pi-lar/neuropil.git" ; } ) ;
pkgs = import nixpkgs { overlays = [ neuropil . overlay ] } ;
python = pkgs . python3 . withPackages ( ps : with ps ; [ neuropil_python < other python > ] )
in with pkgs ; mkDerivarion {
...
buildInputs = [ libneuropil neuropil_luajit python < other deps > ]
...
}หากโครงการของคุณเป็นไปตามเกล็ดเพียงเพิ่ม repo นี้เป็นอินพุตและนำเข้าซ้อนทับ
ปัจจุบันไลบรารี cffi บน Python 3.8 ล้มเหลวในการแยกวิเคราะห์ไฟล์ส่วนหัวที่สำคัญใน stddef ดังนั้นเราจึงจัดเตรียมไลบรารีสำหรับ Python3.7 เท่านั้นจนกว่าจะได้รับการแก้ไข
ไดเรกทอรีอินพุต:
ไดเรกทอรีเอาท์พุท:
คุณสามารถเรียกใช้ Executables ได้เช่นเดียวกับที่เรียกใช้งานได้โปรดดูที่พารามิเตอร์ของแต่ละโปรแกรม:
ตัวอย่างที่ 1: เรียกใช้คอนโทรลเลอร์บนพอร์ต 1111
LD_LIBRARY_PATH=./build/neuropil/lib ./build/neuropil/bin/neuropil_controller -b 1111
ตัวอย่างที่ 2: เรียกใช้โหนดบนพอร์ต 2222 และส่งข้อความเข้าร่วมไปยังโหนดอื่น:
./build/neuropil/bin/neuropil_node -b 2222 -j b3b680a867849efe5886a5db751392e9d3079779e3f3c240ed849c11f4ba7d4a:udp6:test.local:3141
ตัวอย่างที่ 3: เรียกใช้โหนดบนพอร์ต 2222 และส่งข้อความเข้าร่วมไวลด์การ์ดไปยังโหนดอื่น:
./build/neuropil/bin/neuropil_node -b 2222 -j *:udp6:test.local:3141
ในการเรียกใช้ชุดทดสอบโปรดเราพารามิเตอร์ "-J1" เพื่อ จำกัด การดำเนินการแบบขนาน โดยปกติเราใช้คำสั่งต่อไปนี้:
./build/neuropil/bin/neuropil_test_suite --tap -j1
โครงการนี้มีให้เป็นโอเพ่นซอร์สภายใต้ข้อกำหนดของ Open Software License Version 3.0 อย่างไรก็ตามไฟล์บางไฟล์ใน ext_tools ได้รับอนุญาตภายใต้ BSD2 หรือ GPL-2.0-Orlater และ X11 ดังนั้นโปรดสำหรับข้อมูลที่ถูกต้องตรวจสอบไฟล์แต่ละไฟล์