尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
cangjie_build 仓颉 SDK macOS 原生构建实战:从环境准备到 Hello, Cangjie 全流程
文档教程构建工具【免费下载链接】cangjie_build仓颉SDK集成构建指导书。项目地址https://gitcode.com/Cangjie/cangjie_build点击查看免费下载本文基于 cangjie_build 仓库中的 macOS 构建指导书中文版见 docs/macos.md面向希望在 macOS以 14 Sonoma 为例上搭建完整构建环境、源码级集成构建包含全部组件的mac仓颉 SDK 的开发者。按照本文从系统要求、依赖安装、环境变量、四个源码仓库的获取与编译到最终打包和验证逐步执行你可以独立完成一次从零到可运行的 SDK 构建并理解每个组件的产物去向与相互依赖关系。1 构建流程全景macOS 原生构建的目标产物是两个安装包cangjie-sdk-${SDK_NAME}-${CANGJIE_VERSION}.tar.gzSDK 主体SDK_NAME为mac-aarch64或mac-x64和cangjie-stdx-${SDK_NAME}-${CANGJIE_VERSION}.${STDX_VERSION}.zipSTDX 扩展库。整个流程可以分为五个阶段从源码组织结构看整个构建依赖 4 个上游仓库cangjie_compiler编译器cjc与调试器cjdb其output/目录是所有组件的汇聚中心、cangjie_runtime运行时runtime与标准库stdlib、cangjie_tools9 个配套工具和cangjie_stdxSTDX 扩展库。除 stdx 外所有组件的产物最终都汇聚到$WORKSPACE/cangjie_compiler/output因此构建顺序上编译器和运行时、标准库必须先于工具集完成。需要特别说明构建前提本指导书基于较高版本操作系统macOS 14 Sonoma简化步骤如 README_zh.md 所述构建出的 SDK 只能在对应系统上运行若目标系统版本更低需要在低版本系统上构建且更多依赖工具需要从源码编译复杂度会显著提升。2 环境准备2.1 系统要求项目要求操作系统macOS 14 Sonoma 为例其他版本可参考本流程磁盘空间≥50GB内存≥8GB物理内存 交换空间用户权限普通用户 sudo 权限CPU 架构必须根据芯片架构x86_64 或 aarch64设置对应环境变量芯片架构决定了后续ARCH、SDK_NAME及产物目录名darwin_${ARCH}_cjnative的取值是贯穿全流程的关键变量务必在最开始就确认正确。2.2 各组件的构建依赖版本要求构建依赖工具矩阵 中给出了 macOS 版本各组件所需的构建工具与版本要求与本指导书直接相关的部分如下✅ 表示该组件需要此工具依赖构建工具cjccjdbruntimestdcjpmcjfmtcjlintcjcovcjtrace-recoverlsphlestdxpython: 3.7✅✅✅✅✅✅✅✅✅✅✅✅googletest: 1.12✅----------------✅----LLVM: 16.0.0 且 17✅✅✅✅--✅✅✅✅✅--✅cmake: 3.16.5 且 4✅✅✅✅--✅✅✅✅✅--✅ninja: 1.10✅✅✅✅--✅------✅--✅openssl: 3------✅--------------✅swig: 4--✅--------------------可以看出 macOS 与 Linux 构建的一个重要差异编译器侧要求LLVM 16Linux 为 LLVM 15.x这也是指导书要求通过 Homebrew 安装llvm16的原因。另外矩阵中的objc interop组件依赖 Xcode 15属于交叉/互操作构建范畴不在本篇原生 macOS 构建的流程内。2.3 安装 cmake要求 3.17, 4cmake 需要手动安装 dmg 或 tar.gz 包官方下载渠道为 CMake 官网。两种安装方式方式一dmg 安装。下载后拖入 Applications并执行二选一# 安装至 /usr/local/bin sudo /Applications/CMake.app/Contents/bin/cmake-gui --install # 自定义安装位置/path/to/cmake 请替换为你的安装目录 sudo /Applications/CMake.app/Contents/bin/cmake-gui --install/path/to/cmake # 使用前将 cmake/bin 加入环境变量 PATH/Applications/CMake.app/Contents/bin:$PATH方式二tar.gz 安装。# 解压 tar 包 tar -zxvf cmake-3.x.x-macos-universal.tar.gz /path/to/cmake # 使用前将 cmake/bin 加入环境变量或将配置写入 ~/.zshrc export PATH/path/to/cmake/bin:$PATH2.4 使用 Homebrew 安装其他构建工具除 cmake 外其余依赖推荐使用 Homebrew 一键安装brew install python3 ninja llvm16 openssl3 bison googletest gnu-tar swig这几个工具与依赖矩阵的对应关系llvm16满足 LLVM 16.0.0 且 17openssl3供 stdlib 与 stdx 链接使用googletest供 cjc 与 lsp 的测试编译swig供 cjdb 的接口绑定gnu-tar则直接用于第 5 章的gtar打包命令bison、ninja、python3是各组件build.py的通用依赖。2.5 设置环境变量请在构建前务必设置以下变量export ARCHaarch64 # 或x86_64 export CANGJIE_VERSION1.0.0 # Cangjie SDK 版本 export STDX_VERSION1 # Stdx 版本 export SDK_NAMEmac-aarch64 # 或mac-x64各变量的作用ARCH芯片架构取值aarch64Apple Silicon或x86_64Intel。它决定运行时/标准库的产物目录darwin_release_${ARCH}、stdx 目标目录darwin_${ARCH}_cjnative以及 cjpm 的 rpath 路径CANGJIE_VERSIONSDK 版本号会出现在编译参数-v和最终安装包文件名中STDX_VERSIONSTDX 扩展库版本仅用于 stdx 安装包文件名SDK_NAMESDK 命名标识取mac-aarch64或mac-x64与ARCH保持一致用于最终打包文件名。接着设置工具链路径。请注意以下示例中 16.x、3.x 等版本号必须替换为你实际安装的版本export CELLAR_PATH/path/to/Cellar # 可使用 brew --cellar 命令查看 # 对于 arm 芯片Cellar 通常位于/opt/homebrew/Cellar # 对于 intel 芯片Cellar 通常位于/usr/local/Cellar # 如何找到版本号 # 使用 brew list --versions 查看已安装的软件包及其版本号例如 # brew list --versions llvm16 export PATH$CELLAR_PATH/llvm16/16.x/bin:$PATH export OPENSSL_PATH$CELLAR_PATH/openssl3/3.x/lib export LD_LIBRARY_PATH$OPENSSL_PATH:$LD_LIBRARY_PATH export DYLD_LIBRARY_PATH$OPENSSL_PATH:$DYLD_LIBRARY_PATH这里有两处 macOS 特有的细节值得注意Homebrew 的包体位于Cellar下按“包名/版本号”组织的目录中Apple Silicon 与 Intel 的默认前缀不同/opt/homebrew与/usr/local因此CELLAR_PATH必须按芯片区分OPENSSL_PATH同时导出到LD_LIBRARY_PATH和DYLD_LIBRARY_PATH前者服务于构建期链接后者是 macOS 上动态库加载的实际路径变量后续标准库--target-lib$OPENSSL_PATH和 STDX 构建都会直接引用它。3 源码准备3.1 创建工作区/path/to/workspace请替换为你构建仓颉 SDK 的工作目录export WORKSPACE/path/to/workspace mkdir -p $WORKSPACE; cd $WORKSPACE;3.2 获取仓颉源码依次克隆 4 个仓库的main分支到工作区git clone https://gitcode.com/Cangjie/cangjie_compiler.git -b main; git clone https://gitcode.com/Cangjie/cangjie_runtime.git -b main; git clone https://gitcode.com/Cangjie/cangjie_tools.git -b main; git clone https://gitcode.com/Cangjie/cangjie_stdx.git -b main;这 4 个目录之后会反复出现在所有编译命令中可先建立对照关系cangjie_compiler是产物汇聚地output/cangjie_runtime/runtime与cangjie_runtime/stdlib分别对应运行时与标准库cangjie_tools下是各工具各自的独立子工程cangjie_stdx独立产出扩展库。4 编译流程各组件统一采用build.py驱动的三段式流程clean清理历史产物 →build -t release以 Release 模式编译 →install安装到约定位置。以下按依赖顺序逐组件展开。4.1 编译仓颉编译器和调试器cd $WORKSPACE/cangjie_compiler; python3 build.py clean; python3 build.py build -t release -v ${CANGJIE_VERSION} --no-tests --build-cjdb; python3 build.py install;关键参数说明-t releaseRelease 构建模式SDK 交付必须使用 Release-v ${CANGJIE_VERSION}将版本号注入编译器使cjc -v输出与 SDK 版本一致--no-tests跳过测试编译缩短构建时间googletest 依赖因此只在测试构建时才被用到--build-cjdb一并构建调试器 cjdb该选项需要 swig 工具支持接口绑定。安装完成后立即验证source output/envsetup.sh; cjc -v;output/envsetup.sh是编译器产出的环境脚本source 之后cjc等命令即可直接使用cjc -v输出版本号即说明编译器安装成功。4.2 编译仓颉运行时cd $WORKSPACE/cangjie_runtime/runtime; python3 build.py clean; python3 build.py build -t release -v ${CANGJIE_VERSION}; python3 build.py install; cp -R output/common/darwin_release_${ARCH}/{lib,runtime} $WORKSPACE/cangjie_compiler/output;注意最后一条cp运行时产物先落在自己的output/common/darwin_release_${ARCH}目录下需要把lib和runtime两个子目录复制到cangjie_compiler/output这是产物汇聚到编译器输出目录的第一步——后续envsetup.sh与最终 SDK 包都从这个目录取运行时。4.3 编译仓颉标准库cd $WORKSPACE/cangjie_runtime/stdlib; python3 build.py clean; python3 build.py build -t release \ --target-lib$WORKSPACE/cangjie_runtime/runtime/output \ --target-lib$OPENSSL_PATH; python3 build.py install; cp -R output/* $WORKSPACE/cangjie_compiler/output/;标准库构建有两次--target-lib指定一次指向运行时输出目录标准库需链接运行时一次指向OPENSSL_PATH依赖矩阵中 std 组件的 openssl: 3 依赖在此生效。构建完成后用cp -R output/*将全部产物并入编译器输出目录。4.4 编译 Stdx 扩展库cd $WORKSPACE/cangjie_stdx; python3 build.py clean; python3 build.py build -t release \ --include${WORKSPACE}/cangjie_compiler/include \ --target-lib$OPENSSL_PATH; python3 build.py install; export CANGJIE_STDX_PATH$WORKSPACE/cangjie_stdx/target/darwin_${ARCH}_cjnative/static/stdx;--include指向编译器仓库的include头文件目录说明 STDX 静态库是在编译器头文件环境下编译的二者版本必须匹配--target-lib$OPENSSL_PATH与标准库类似用于链接 OpenSSL产物位于target/darwin_${ARCH}_cjnative/static/stdx这里导出CANGJIE_STDX_PATH便于后续引用STDX 是独立交付物不并入cangjie_compiler/output而是与 SDK 分开打包见 5.2 节。4.5 编译仓颉工具集工具集共 9 个组件均位于cangjie_tools下的独立子工程中每个都有独立的build/build.py。统一模式是在子工程内执行clean/build/install后把产物手动拷贝或移动到cangjie_compiler/output/tools/的对应子目录bin、lib、config。(1) cjpmcd $WORKSPACE/cangjie_tools/cjpm/build; python3 build.py clean; python3 build.py build -t release --set-rpath loader_path/../../runtime/lib/darwin_${ARCH}_cjnative; python3 build.py install; mkdir -p ${WORKSPACE}/cangjie_compiler/output/tools/config; cp ${WORKSPACE}/cangjie_tools/cjpm/dist/cjpm ${WORKSPACE}/cangjie_compiler/output/tools/bin; mv ${WORKSPACE}/cangjie_tools/cjpm/dist/*.toml ${WORKSPACE}/cangjie_compiler/output/tools/config;cjpm 是全部工具中唯一带--set-rpath参数的loader_path/../../runtime/lib/darwin_${ARCH}_cjnative是 macOS 的动态库定位语法loader_path相对可执行文件自身定位它让 cjpm 在脱离构建环境的任意安装位置都能找到运行时库这正是 macOS 平台上打包可独立分发的工具时的典型做法。(2) cjfmtcd ${WORKSPACE}/cangjie_tools/cjfmt/build; python3 build.py clean; python3 build.py build -t release; python3 build.py install; mv ${WORKSPACE}/cangjie_tools/cjfmt/build/build/bin/cjfmt ${WORKSPACE}/cangjie_compiler/output/tools/bin; mv ${WORKSPACE}/cangjie_tools/cjfmt/config/*.toml ${WORKSPACE}/cangjie_compiler/output/tools/config;除可执行文件外还要把config/*.toml格式配置一并放入tools/config保证 SDK 内的 cjfmt 开箱即用。(3) cjlintcd ${WORKSPACE}/cangjie_tools/cjlint/build; python3 build.py clean; python3 build.py build -t release; python3 build.py install; mv ${WORKSPACE}/cangjie_tools/cjlint/dist/bin/cjlint ${WORKSPACE}/cangjie_compiler/output/tools/bin mv ${WORKSPACE}/cangjie_tools/cjlint/dist/lib/* ${WORKSPACE}/cangjie_compiler/output/tools/lib mv ${WORKSPACE}/cangjie_tools/cjlint/dist/config/* ${WORKSPACE}/cangjie_compiler/output/tools/configcjlint 是三层产物结构最完整的示例二进制进bin动态库进lib规则配置进config。(4) cjcovcd ${WORKSPACE}/cangjie_tools/cjcov/build; python3 build.py clean; python3 build.py build -t release; python3 build.py install; mv ${WORKSPACE}/cangjie_tools/cjcov/dist/cjcov ${WORKSPACE}/cangjie_compiler/output/tools/bin;(5) cjtrace-recovercd ${WORKSPACE}/cangjie_tools/cjtrace-recover/build; python3 build.py clean; python3 build.py build -t release; python3 build.py install; python3 build.py install --prefix ${WORKSPACE}/cangjie_compiler/output/tools;与其他工具不同cjtrace-recover 通过install --prefix直接把安装前缀指定为 SDK 工具目录无需再手动cp。(6) HyperLangExtensionhlecd $WORKSPACE/cangjie_tools/hyperlangExtension/build; python3 build.py clean; python3 build.py build -t release; python3 build.py install; cp ${WORKSPACE}/cangjie_tools/hyperlangExtension/target/bin/main ${WORKSPACE}/cangjie_compiler/output/tools/bin/hle; cp -R ${WORKSPACE}/cangjie_tools/hyperlangExtension/src/dtsparser ${WORKSPACE}/cangjie_compiler/output/tools; rm -rf ${WORKSPACE}/cangjie_compiler/output/tools/dtsparser/*.cj;该工具主程序名为main交付时需重命名为hledtsparser子目录随工具一并分发并删除其中的.cj源码只保留编译产物。(7) LSP Servercd $WORKSPACE/cangjie_tools/cangjie-language-server/build; python3 build.py clean; python3 build.py build -t release; python3 build.py install; cp ${WORKSPACE}/cangjie_tools/cangjie-language-server/output/bin/LSPServer ${WORKSPACE}/cangjie_compiler/output/tools/bin(8) cjprofcd ${WORKSPACE}/cangjie_tools/cjprof/build; python3 build.py build -t release; python3 build.py install; cp $WORKSPACE/cangjie_tools/cjprof/dist/bin/cjprof ${WORKSPACE}/cangjie_compiler/output/tools/bin cp $WORKSPACE/cangjie_tools/cjprof/dist/lib/* ${WORKSPACE}/cangjie_compiler/output/tools/lib; if [[ -d $WORKSPACE/cangjie_tools/cjprof/static ]]; then cp -Rf $WORKSPACE/cangjie_tools/cjprof/static cangjie/tools/config; fi注意static目录为可选项指令书用if [[ -d ... ]]做了存在性判断若源码仓库中不存在该目录则跳过拷贝。(9) cjcompatcd ${WORKSPACE}/cangjie_tools/cjcompat/build; python3 build.py build -t release; python3 build.py install; cp $WORKSPACE/cangjie_tools/cjcompat/dist/bin/cjcompat ${WORKSPACE}/cangjie_compiler/output/tools/bin完成以上 9 个工具后cangjie_compiler/output/tools下即形成完整的 SDK 工具集bin/中是各工具可执行文件lib/中是 cjlint、cjprof 的动态库config/中是各工具的*.toml与规则配置。5 组织并打包文件5.1 组织并打包 SDK# 清空历史构建 mkdir -p $WORKSPACE/software; rm -rf $WORKSPACE/software/*; cd $WORKSPACE/software; # 拷贝cangjie目录 cp -R $WORKSPACE/cangjie_compiler/output cangjie; cp $WORKSPACE/cangjie_compiler/LICENSE cangjie; cp $WORKSPACE/cangjie_compiler/Open_Source_Software_Notice.docx cangjie; # 打包和设置权限 chmod -R 750 cangjie gtar --formatgnu -zcvf cangjie-sdk-${SDK_NAME}-${CANGJIE_VERSION}.tar.gz cangjie; chmod 550 cangjie-sdk-${SDK_NAME}-${CANGJIE_VERSION}.tar.gz;打包要点SDK 主体就是cangjie_compiler/output目录整体此前各组件汇入的编译器、运行时、标准库与工具集在这里一次性交付附带LICENSE与Open_Source_Software_Notice.docx满足开源合规要求使用 Homebrew 安装的gnu-targtar并显式指定--formatgnu保证压缩包在不同平台间归档格式一致命名规则为cangjie-sdk-${SDK_NAME}-${CANGJIE_VERSION}.tar.gz例如cangjie-sdk-mac-aarch64-1.0.0.tar.gz。5.2 组织并打包 Stdxcd $WORKSPACE/software; # 拷贝stdx目录 cp -r $WORKSPACE/cangjie_stdx/target/darwin_${ARCH}_cjnative ./; cp $WORKSPACE/cangjie_stdx/LICENSE darwin_${ARCH}_cjnative; cp $WORKSPACE/cangjie_stdx/Open_Source_Software_Notice.docx darwin_${ARCH}_cjnative; chmod -R 750 darwin_${ARCH}_cjnative; zip -qr cangjie-stdx-${SDK_NAME}-${CANGJIE_VERSION}.${STDX_VERSION}.zip darwin_${ARCH}_cjnative; chmod 550 cangjie-stdx-${SDK_NAME}-${CANGJIE_VERSION}.${STDX_VERSION}.zip;STDX 以整个darwin_${ARCH}_cjnative目标目录交付命名中额外包含${STDX_VERSION}与 SDK 包形成独立的版本维度。6 验证编译并运行 Hello, Cangjie先确认两个产物都已生成ls -lh $WORKSPACE/software # 应包含 # - cangjie-sdk-${SDK_NAME}-${CANGJIE_VERSION}.tar.gz # - cangjie-stdx-${SDK_NAME}-${CANGJIE_VERSION}.${STDX_VERSION}.zip然后做端到端验证——加载 SDK 环境、编写并编译运行一段最小仓颉程序cd $WORKSPACE; source $WORKSPACE/software/cangjie/envsetup.sh; echo main() { println(\Hello, Cangjie\) } hello.cj cjc hello.cj -o hello ./hello # 您将在控制台看到以下输出 # Hello, Cangjie这一验证覆盖了构建链路中最关键的两段source envsetup.sh证明 SDK 的环境脚本可用cjc hello.cj -o hello验证了编译器./hello则验证了运行时与标准库在目标架构上的实际可执行性。三步全部通过即说明本次 macOS 原生构建完整成功。7 延伸与其他构建指导的关系本指导书产出的是macmacOS 原生SDK。cangjie_build 仓库还覆盖了同一构建体系下的其他目标MacOS - Android 交叉构建、MacOS - iOS 交叉构建、MacOS - OHOS 交叉构建以及 Linux Native 构建 等各环境入口索引见 README_zh.md。需要说明的是交叉构建指导如 mac-android 的SDK_NAME为mac-android在准备阶段会额外引入 NDK 等目标平台工具链并在工具集阶段增加互操作库编译步骤本篇原生 macOS 流程是理解这些交叉构建指导的共同基础。赞分享文档教程构建工具【免费下载链接】cangjie_build仓颉SDK集成构建指导书。项目地址https://gitcode.com/Cangjie/cangjie_build点击查看免费下载相关推荐Cangjie SDK linux-ohos 交叉构建实战从环境准备到 Hello, Cangjie 验证的全流程Cangjie SDK linux ohos 交叉构建实战从环境准备到 Hello, Cangjie 验证的全流程 本文基于仓颉 SDK 集成构建指导书中的文档教程构建工具cangjie_build 中的仓颉 SDK Linux 原生构建完整指南环境搭建、组件编译到打包验证cangjie_build 中的仓颉 SDK Linux 原生构建完整指南环境搭建、组件编译到打包验证 本文基于 cangjie_build 仓库中的 Lin文档教程构建工具cangjie_build 实战指南在 Ubuntu 22.04 上交叉构建 windows-x64 仓颉 SDKcangjie_build 实战指南在 Ubuntu 22.04 上交叉构建 windows x64 仓颉 SDK 本文基于仓颉 SDK 集成构建指导书仓库文档教程构建工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

神龙卡新一代驱动:解决玄学掉卡与批量部署稳定性实战

神龙卡新一代驱动:解决玄学掉卡与批量部署稳定性实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/14 1:44:57
CAN Signal Layout排查指南:DBC字节序与起始位如何影响信号解析

CAN Signal Layout排查指南:DBC字节序与起始位如何影响信号解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/14 1:44:57
Github子模块(submodule)使用介绍

Github子模块(submodule)使用介绍

目录 一.子模块使用场景 二.子模块(submodule)概念的引入 三.添加子模块 四.查看子模块 五.更新子模块 ■更新项目内子模块到最新版本 ■更新子模块为远程项目的最新版本 六.克隆包含子模块的项目 方法一:先克隆父项目,再更新子模块 ■克隆…

📅 2026/10/14 1:44:57
MORE NEWS

更多资讯

📰

AI驱动测试用例生成:从需求描述到可执行自动化脚本的完整实践指南

1. 为什么需要AI驱动用例生成:从两条完全不同的语言体系说起我见过的绝大多数测试团队,都卡在同一个地方:需求文档写了一大堆,测试用例却少得可怜。产品经理交付的需求描述,是人话,带上下文、带业务背景、带…

📰

三阶RC低通滤波器定点化与移位优化:无FPU MCU的高效实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

为什么两台电脑直连都无法通信

网线类型:现代网卡大多支持 Auto-MDI/MDIX,普通直通线也能直连。但如果是老设备,直连需要 交叉线(一头 568A、一头 568B)。最稳妥:换一根确认好的网线试试。我怀疑是网线类型的原因:直连到底要不…

📰

高效图论图像分割:并查集与贪心合并的实现原理详解

图像分割在计算机视觉里的位置,有点像“人人都知道重要,但真正用起来总是不顺手”的公共组件。早些年做识别、检索、目标提取,第一步几乎都是先把图像切成有意义的块;这几年深度模型虽然端到端扛起了大局,但凡是需要精…

📰

SpringBoot+Vue全栈开发实战:游戏管理平台构建指南

1. 项目概述这个全栈项目是一个典型的Web及游戏管理平台信息管理系统,采用当下最流行的前后端分离架构。后端基于SpringBoot框架构建,前端使用Vue.js实现,数据存储则选用MySQL关系型数据库。整套系统开箱即用,源码结构清晰&#x…

📰

JTT 697.7交通地理信息数据元标准:从字段定义到建表落地的实操指南

简介:《JTT 697.7-2014 交通信息基础数据元 第7部分》是交通运输行业标准,属于《交通信息基础数据元》系列的第7部分,专门规定道路运输信息基础数据元的编制原则、分类方法、具体内容与值域代码。该标准覆盖基本信息、行政许可、日常管理、行…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬