fibjs_vender 是一个fibjs的依赖库,本身基于 Google v8 JavaScript 引擎
fibjs入口 (fibjs github): https://github.com/fibjs/fibjs
文档入口 (General docs (Chinese)): http://fibjs.org/
编译该项目需依赖:
依赖 | Windows | Linux | Darwin |
---|---|---|---|
cmake >= 3.10 | √ | √ | √ |
clang | Optional | √ | √ |
git | Optional | Optional | Optional |
visual studio 2017 (with C++ Tool) | √ | ||
docker | √ |
下载并安装这些工具:
- Visual Studio 2017
- 官方的 cmake: https://cmake.org/download/
如果你希望使用 clang 编译, 你还需要安装:
- 官方的 clang/clang++: http://releases.llvm.org/9.0.0/
- make.exe: https://netix.dl.sourceforge.net/project/ezwinports/make-4.3-without-guile-w32-bin.zip
安装好后, 确保你的环境变量 PATH 中能查到这些命令:
- cmake
- clang/clang++(使用 LLVM 编译时)
- make(使用 LLVM 编译时)
如果你无法在 cmd 中执行这些命令, 说明安装有误, 请检查你是否安装了这些软件并将它们添加到环境变量 PATH.
我们来一步步设置:
下载 VS2017 并安装, https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/.
安装时需选择:
- C++ 工具
- Windows Kits 10
Windows 上要求 clang >= 9.0
, 下载地址
- x64: http://releases.llvm.org/9.0.0/LLVM-9.0.0-win64.exe
- x32: http://releases.llvm.org/9.0.0/LLVM-9.0.0-win32.exe
安装时选择将 LLVM 工具添加到你的用户环境变量 PATH 或系统环境变量 PATH, 你也可以在安装完之后手动将其 bin 目录路径添加到环境变量 PATH.
直接从 make.exe
下载, 解压后, 将其 bin/make.exe
添加到任何一个你的环境变量 PATH 包含的路径中, 比如 C:\Windows\System32
.
在 Windows 上默认会对单个项目开启多核并行编译.
- 打开 Developer Command Prompt VS 2017, 切换到当前项目的根路径
- 运行
.\build.cmd
注意 如果你使用 msvc 编译, 则必须在 Developer Command Prompt VS 2017 中执行, 且不能添加 --use-clang
参数
- 打开一个简单的 Powershell/Cmd (推荐使用 Powershell 或在 Windows Terminal 里打开 Cmd, 它对 LLVM 的输出格式有更好的色彩支持), 切换到当前项目的根路径
- 直接运行
.\build.cmd --use-clang
编译.
注意 不能在 Developer Command Prompt VS 2017 使用 --use-clang
参数.
除此外, 在 Windows 上使用 clang 编译 fibjs_vender 时需要注意:
- 不能使用 VS2017 自带的 clang, 因为它默认会使用 clang-cl 模式编译; 同理, 也不要使用从 VS2017 安装的 cmake.
- clang/LLVM 版本需要 >= 9.0
- 你需要安装 VS2017(附带桌面端 C++ 工具), 你需要使用它的头文件, 该项目的 clang 目前仍然要求 使用
MSV>=1900
.
在 Unix 环境下, 确保 pre-requisites 中对应的这些工具安装好即可.
macOS 自带 apple-clang, 你只需安装 cmake 即可
brew install cmake
在 macOS 下可以直接编译:
./build -j8 x64
./build -j8 ia32
在 Linux 下, 我们使用 docker 来编译, 如下就是编译 x64/release 版本的 fibjs_vender:
DIR=`pwd`;
docker run -t \
-v ${DIR}:/home/ci fibjs/build-env:clang /bin/sh -c "cd /home/ci; sh build -j2 x64 release"
传入对应的参数, 在 Linux 下就可以直接进行交叉编译:
sh build -j2 [x64|ia32|arm|arm64|mips|mips64] [debug|release]
使用对应的架构参数来向 docker 指定你希望的编译目标架构.
每个平台上对应的编译脚本都支持一些选项:
编译选项 | 含义 | 适用平台 |
---|---|---|
x64 | 编译到 x64 架构 | Windows / Linux / Darwin |
ia32 | 编译到 ia32 架构 | Windows / Linux / Darwin |
release | 编译 release 版本 | Windows / Linux / Darwin |
debug | 编译 debug 版本 | Windows / Linux / Darwin |
clean | 清理已生成的中间产物, 库文件和二进制文件 | Windows / Linux / Darwin |