独立构建指导书
规格
当前前端编译器构建支持:
- Linux 上构建 Linux 平台运行的编译器
- MacOS 上构建 MacOS 平台运行的编译器
- Linux 上构建 Windows 平台运行的编译器(交叉编译)
- Linux 上构建适用于 Android 平台的基础库(交叉编译)
- MacOS 上构建适用于 Android 平台的基础库(交叉编译)
- MacOS 上构建适用于 iOS 平台的基础库(交叉编译)
Linux 上构建 Linux 平台运行的编译器
环境依赖
编译器独立构建环境除额外依赖 googletest 执行 UT 外,其他内容与集成构建环境基本一致,详细信息请参阅 Cangjie 构建指导书 (Ubuntu 22.04)-环境准备。 googletest 依赖安装可参考 通用构建指导,也可以在构建时通过 --no-test 选项临时关闭 UT 构建。
构建命令
下载源码:
注意:
请确保编译平台能够正常连接网络并且正常访问 Gitcode 或 Gitee 等代码托管平台。
export WORKSPACE=$HOME/cangjie_build;
git clone https://gitcode.com/Cangjie/cangjie_compiler.git -b main;
对源码进行编译:
cd $WORKSPACE/cangjie_compiler;
export CMAKE_PREFIX_PATH=/opt/buildtools/libedit-3.1:/opt/buildtools/ncurses-6.3/usr;
python3 build.py clean;
python3 build.py build -t release --build-cjdb;
python3 build.py install;
build.py clean命令用于清空工作区临时文件。build.py build命令开始执行编译:- 二级选项
-t即--build-type,指定编译产物类型,可以是release、debug或relwithdebinfo。 - 二级选项
--build-cjdb选项开启 cjdb(lldb) 编译,了解更多更多关于 cjdb 内容,请参阅cjdb工具介绍。
- 二级选项
build.py install命令将编译产物安装到output目录下。
验证产物:
source ./output/envsetup.sh
cjc -v
输出如下:
Cangjie Compiler: x.xx.xx (cjnative)
Target: xxxx-xxxx-xxxx
MacOS 上构建 MacOS 平台运行的编译器
环境准备
编译器独立构建环境除额外依赖 googletest 执行 UT 外,其他内容与集成构建环境基本一致,详细信息请参阅 Cangjie 构建指导书 (Macos 14 Sonoma)-环境准备。 googletest 依赖安装可参考 通用构建指导,也可以在构建时通过 --no-test 选项临时关闭 UT 构建。
构建命令
下载源码:
注意:
请确保编译平台能够正常连接网络并且正常访问 Gitcode 或 Gitee 等代码托管平台。
export WORKSPACE=$HOME/cangjie_build;
git clone https://gitcode.com/Cangjie/cangjie_compiler.git -b main;
对源码进行编译:
cd $WORKSPACE/cangjie_compiler;
python3 build.py clean;
python3 build.py build -t release --build-cjdb;
python3 build.py install;
build.py clean命令用于清空工作区临时文件。build.py build命令开始执行编译:- 二级选项
-t即--build-type,指定编译产物类型,可以是release、debug或relwithdebinfo。 - 二级选项
--build-cjdb选项开启 cjdb(lldb) 编译,了解更多更多关于 cjdb 内容,请参阅cjdb工具介绍。
- 二级选项
build.py install命令将编译产物安装到output目录下。
验证产物:
source ./output/envsetup.sh
cjc -v
输出如下:
Cangjie Compiler: x.xx.xx (cjnative)
Target: xxxx-xxxx-xxxx
Linux 上构建 Windows 平台运行的编译器(交叉编译)
环境准备
编译器独立构建环境除额外依赖 googletest 执行 UT 外,其他内容与集成构建环境基本一致,详细信息请参阅 Cangjie 构建指导书 (Ubuntu 22.04)-环境准备。 googletest 依赖安装可参考 通用构建指导,也可以在构建时通过 --no-test 选项临时关闭 UT 构建。
注意:
请确保编译平台能够正常连接网络并且正常访问 Gitcode 或 Gitee 等代码托管平台。
构建命令
下载源码:
export WORKSPACE=$HOME/cangjie_build;
git clone https://gitcode.com/Cangjie/cangjie_compiler.git -b main;
源码构建:
cd $WORKSPACE/cangjie_compiler;
export CMAKE_PREFIX_PATH=${MINGW_PATH}/x86_64-w64-mingw32;
python3 build.py build -t release \
--product cjc \
--target windows-x86_64 \
--target-sysroot /opt/buildtools/mingw-w64/ \
--target-toolchain /opt/buildtools/mingw-w64/bin \
--build-cjdb;
python3 build.py install --host windows-x86_64;
CMAKE_PREFIX_PATH环境变量用来指定 cmake 用于将产物生成到目标平台对应的文件夹中。build.py clean命令用于清空工作区临时文件。build.py build命令开始执行编译:- 二级选项
-t即--build-type,可以是release、debug或relwithdebinfo。 - 二级选项
--product指定构建目标产物, 可以是all、cjc或libs。 - 二级选项
--target选项指定目标平台描述,可以是native(当前编译平台)、windows-x86_64、ohos-aarch64、ohos-x86_64、ios-aarch64、android-aarch64、android-x86_64、ios-simulator-aarch64、ios-aarch64。 - 二级选项
--target-sysroot选项将后面的参数传递给 C/C++ 编译器作为其--sysroot参数。 - 二级选项
--target-toolchain选项指定目标平台工具链路径,使用该路径下的编译器进行交叉编译。 - 二级选项
--build-cjdb选项开启 cjdb(lldb) 编译,了解更多更多关于 cjdb 内容,请参阅cjdb工具介绍。
- 二级选项
build.py install命令将编译产物安装到output目录下:- 二级选项
--host选项指定目标平台安装策略,可以是native(当前编译平台)、windows-x86_64、ohos-aarch64、ohos-x86_64、android-aarch64、android-x86_64、ios-simulator-aarch64、ios-aarch64。
- 二级选项
验证产物:
由于编译产物为 Windows 平台可执行文件,需要将产物拷贝至 Windows,并使用 ./output/envsetup.bat 脚本应用 cjc 环境。
source ./output/envsetup.bat
cjc.exe -v
该步骤仅生成目标平台 cjc 可执行文件,如需构建周边依赖请参阅 Cangjie 构建指导书 (Ubuntu 22.04)-源码构建。
Linux 上构建适用于 Android 平台的基础库(交叉编译)
环境准备
编译器独立构建环境除额外依赖 googletest 执行 UT 外,其他内容与集成构建环境基本一致,详细信息请参阅 Cangjie 构建指导书 (Ubuntu 22.04)-环境准备。 googletest 依赖安装可参考 通用构建指导,也可以在构建时通过 --no-test 选项临时关闭 UT 构建。
注意:
请确保编译平台能够正常连接网络并且正常访问 Gitcode 或 Gitee 等代码托管平台。
构建命令
下载源码:
export WORKSPACE=$HOME/cangjie_build;
git clone https://gitcode.com/Cangjie/cangjie_compiler.git -b main;
源码构建:
cd $WORKSPACE/cangjie_compiler;
export ANDROID_NDK_ROOT=/opt/Android-NDK-r25c/AndroidNDK9519653.app/Contents/NDK;
python3 build.py build -t release --build-cjdb --no-tests;
python3 build.py build -t release \
--target android-aarch64 \
--android-ndk ${ANDROID_NDK_ROOT} \
--no-tests;
python3 build.py install --host android-aarch64;
ANDROID_NDK_ROOT环境变量用来设置 Android NDK 的路径。build.py clean命令用于清空工作区临时文件。build.py build命令开始执行编译:- 二级选项
-t即--build-type,可以是release、debug或relwithdebinfo。 - 二级选项
--product指定构建目标产物, 可以是all、cjc或libs。 - 二级选项
--target选项指定目标平台描述,可以是native(当前编译平台)、windows-x86_64、ohos-aarch64、ohos-x86_64、ios-aarch64、android-aarch64、android-x86_64、ios-simulator-aarch64、ios-aarch64。 - 二级选项
--android-ndk选项指定 Android NDK 的路径。 - 二级选项
--build-cjdb选项开启 cjdb(lldb) 编译,了解更多更多关于 cjdb 内容,请参阅cjdb工具介绍。
- 二级选项
build.py install命令将编译产物安装到output目录下:- 二级选项
--host选项指定目标平台安装策略,可以是native(当前编译平台)、windows-x86_64、ohos-aarch64、ohos-x86_64、android-aarch64、android-x86_64、ios-simulator-aarch64、ios-aarch64。
- 二级选项
MacOS 上构建适用于 Android 平台的基础库(交叉编译)
环境准备
编译器独立构建环境除额外依赖 googletest 执行 UT 外,其他内容与集成构建环境基本一致,详细信息请参阅 Cangjie 构建指导书 (Macos 14 Sonoma)-环境准备。 googletest 依赖安装可参考 通用构建指导,也可以在构建时通过 --no-test 选项临时关闭 UT 构建。
构建命令
下载源码:
注意:
请确保编译平台能够正常连接网络并且正常访问 Gitcode 或 Gitee 等代码托管平台。
export WORKSPACE=$HOME/cangjie_build;
git clone https://gitcode.com/Cangjie/cangjie_compiler.git -b main;
源码构建:
cd $WORKSPACE/cangjie_compiler;
export ANDROID_NDK_ROOT=/opt/Android-NDK-r25c/AndroidNDK9519653.app/Contents/NDK
python3 build.py build -t release --build-cjdb --no-tests;
python3 build.py build -t release \
--target android-aarch64 \
--android-ndk ${ANDROID_NDK_ROOT} \
--no-tests;
python3 build.py install --host android-aarch64
ANDROID_NDK_ROOT环境变量用来设置 Android NDK 的路径。build.py clean命令用于清空工作区临时文件。build.py build命令开始执行编译:- 二级选项
-t即--build-type,可以是release、debug或relwithdebinfo。 - 二级选项
--product指定构建目标产物, 可以是all、cjc或libs。 - 二级选项
--target选项指定目标平台描述,可以是native(当前编译平台)、windows-x86_64、ohos-aarch64、ohos-x86_64、ios-aarch64、android-aarch64、android-x86_64、ios-simulator-aarch64、ios-aarch64。 - 二级选项
--android-ndk选项指定 Android NDK 的路径。 - 二级选项
--build-cjdb选项开启 cjdb(lldb) 编译,了解更多更多关于 cjdb 内容,请参阅cjdb工具介绍。
- 二级选项
build.py install命令将编译产物安装到output目录下:- 二级选项
--host选项指定目标平台安装策略,可以是native(当前编译平台)、windows-x86_64、ohos-aarch64、ohos-x86_64、android-aarch64、android-x86_64、ios-simulator-aarch64、ios-aarch64。
- 二级选项
MacOS 上构建适用于 iOS 平台的基础库(交叉编译)
环境准备
编译器独立构建环境除额外依赖 googletest 执行 UT 外,其他内容与集成构建环境基本一致,详细信息请参阅 Cangjie 构建指导书 (Macos 14 Sonoma)-环境准备。 googletest 依赖安装可参考 通用构建指导,也可以在构建时通过 --no-test 选项临时关闭 UT 构建。
构建命令
下载源码:
注意:
请确保编译平台能够正常连接网络并且正常访问 Gitcode 或 Gitee 等代码托管平台。
export WORKSPACE=$HOME/cangjie_build;
git clone https://gitcode.com/Cangjie/cangjie_compiler.git -b main;
源码构建:
# 编译 mac aarch64 host
cd ${WORKSPACE}/cangjie_compiler;
python3 build.py clean;
python3 build.py build -t release --no-tests --build-cjdb;
python3 build.py install;
# 编译 mac ios libs
export XCODE_DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
export IOS_SDKROOT=${XCODE_DEVELOPER_DIR}/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS17.5.sdk
export IOS_SIMULATOR_SDKROOT=${XCODE_DEVELOPER_DIR}/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator17.5.sdk
export TOOLCHAIN_BIN=${XCODE_DEVELOPER_DIR}/Toolchains/XcodeDefault.xctoolchain/usr/bin
python3 build.py build -t release \
--product libs \
--target ios-aarch64 \
--target-sysroot ${IOS_SDKROOT} \
--target-toolchain ${TOOLCHAIN_BIN};
python3 build.py install;
# 编译 mac ios simulator libs
python3 build.py build -t release \
--product libs \
--target ios-simulator-aarch64 \
--target-sysroot ${IOS_SIMULATOR_SDKROOT} \
--target-toolchain ${TOOLCHAIN_BIN};
python3 build.py install;
XCODE_DEVELOPER_DIR环境变量用来设置 Xcode 的开发目录。IOS_SDKROOT环境变量用来设置 iPhoneOS 的 SDK 路径。IOS_SIMULATOR_SDKROOT环境变量用来设置 iOS 模拟器的 SDK 路径。TOOLCHAIN_BIN环境变量用来设置 Xcode 工具链的二进制文件路径。build.py clean命令用于清空工作区临时文件。build.py build命令开始执行编译:- 二级选项
-t即--build-type,可以是release、debug或relwithdebinfo。 - 二级选项
--product指定构建目标产物, 可以是all、cjc或libs。 - 二级选项
--target选项指定目标平台描述,可以是native(当前编译平台)、windows-x86_64、ohos-aarch64、ohos-x86_64、ios-aarch64、android-aarch64、android-x86_64、ios-simulator-aarch64、ios-aarch64。 - 二级选项
--target-sysroot选项将后面的参数传递给 C/C++ 编译器作为其--sysroot参数。 - 二级选项
--target-toolchain选项指定目标平台工具链路径,使用该路径下的编译器进行交叉编译。 - 二级选项
--build-cjdb选项开启 cjdb(lldb) 编译,了解更多更多关于 cjdb 内容,请参阅cjdb工具介绍。
- 二级选项
build.py install命令将编译产物安装到output目录下:- 二级选项
--host选项指定目标平台安装策略,可以是native(当前编译平台)、windows-x86_64、ohos-aarch64、ohos-x86_64、ios-simulator-aarch64、ios-aarch64。
- 二级选项
build.py 选项帮助
clean 选项
clean 选项用于清理 build/output 等文件夹。
build 选项
build 选项用于构建工程文件。它提供了如下二级选项:
-h, --help:用于展示二级选项的帮助信息。-t, --build-type:用于指定编译产物类型,可以是release、debug或relwithdebinfo。--print-cmd:用于展示构建脚本配置的完整 cmake 命令。-j, --jobs JOBS:并发执行构建任务数。--link-jobs LINK_JOBS:并发执行链接任务数。--enable-assert:使能编译器断言,开发调试编译器使用。--no-tests:不编译 unittest 用例代码。--disable-stack-grow-feature:关闭栈增长功能。--hwasan:开启编译器源码硬件 asan 功能,由于其依赖 hwasan 工具,目前仅支持 ohos 平台开启。--gcc-toolchain:指定 gcc 工具链,它用于交叉编译。--target:选项指定目标平台描述,可以是native(当前编译平台)、windows-x86_64、ohos-aarch64、ohos-x86_64、ios-simulator-aarch64、ios-aarch64、android-aarch64、android-x86_64。-L, --target-lib:指定目标平台所需链接的依赖库路径。--target-toolchain:指定编译工具所在的路径。-I, --include指定目标平台头文件查找路径。--target-sysroot:传递 sysroot 内容到 C/C++ 编译器的 sysroot 选项。--product {all,cjc,libs}:指定构建目标产物,可以是all(默认值,指定编译包含cjc和libs内容)、cjc(编译器二进制文件)、libs(标准库依赖的编译器库)。--build-cjdb:开启构建仓颉调试器。--enable-sanitize-option: 使 cjc 选项--sanitize对开发者可见,用于构建 sanitizer 版本。--cjlib-sanitizer-support: 构建 sanitizer 版本仓颉库,需配合--product=libs使用。可选项有asan,tsan和hwasan。
install 选项
install 选项用于将编译产物组织到指定目录下。它提供了如下二级选项:
-h, --help:用于展示二级选项的帮助信息。--host:指定目标平台安装策略,可以是native(当前编译平台)、windows-x86_64、ohos-aarch64、ohos-x86_64、ios-simulator-aarch64、ios-aarch64、android-aarch64、android-x86_64。--prefix:指定产物安装文件夹路径,该选项和--host均未指定时,安装到工程目录下 output 文件夹,与--host同时指定时,安装到--prefix指定路径。
test 选项
test 选项用于执行编译好的 unittest 用例,如果编译时指定 --no-test 时无作用。