# cmake-ohos **Repository Path**: Kaiter-Plus/cmake-ohos ## Basic Information - **Project Name**: cmake-ohos - **Description**: 可编译到开源鸿蒙系统上的 Cmake 构建工具 - **Primary Language**: Unknown - **License**: BSD-3-Clause - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-19 - **Last Updated**: 2026-03-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 备注 **本文都以`x86_64`架构为例,如果你为其它架构,比如`aarch64`,注意修改命令行中的`x86_64`字段。** ## 前置条件 ### 1. 设置 OHOS_SDK 环境变量: ```bash export OHOS_SDK= ``` 比如我的在`~/ohos/sdk/native`,那就可以设置: ```bash export OHOS_SDK=~/ohos/sdk/native ``` ### 2. 复制缺失的动态库 将`libc++_shared.so`复制到`$OHOS_SDK/sysroot/usr/lib/-linux-ohos`下,补全动态库: ```bash cp $OHOS_SDK/sysroot/usr/lib/-linux-ohos/ ``` 比如我的`SDK`的位置是`~/ohos/sdk/native`,`libc++_shared.so`所在位置为`~/ohos`,然后我想补全`x86_64`架构的,则执行下列命令: ```bash cp ~/ohos/libc++_shared.so $OHOS_SDK/sysroot/usr/lib/x86_64-linux-ohos/ ``` ## CMake ### 1. 进入`cmake`源码根目录: ```bash cd ``` 比如我的位置在`~/ohos/build/cmake`下,那就可以: ```bash cd ~/ohos/build/cmake ``` ### 2. 新建`build`文件夹(如果之前编译过,先删除之前的编译产物),用于放构建产物: ```bash rm -rf build && mkdir build && cd build ``` ### 3. 用 CMake 交叉编译,生成中间产物: ```bash $OHOS_SDK/build-tools/cmake/bin/cmake .. \ -G Ninja \ -DCMAKE_C_COMPILER=$OHOS_SDK/llvm/bin/clang \ -DCMAKE_CXX_COMPILER=$OHOS_SDK/llvm/bin/clang++ \ -DCMAKE_TOOLCHAIN_FILE=$OHOS_SDK/build/cmake/ohos.toolchain.cmake \ -DOHOS_ARCH=x86_64 \ -DOHOS_PLATFORM=OHOS \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_EXE_LINKER_FLAGS="-static" \ -DBUILD_TESTING=OFF ``` ### 4. 编译最终产物: ```bash $OHOS_SDK/build-tools/cmake/bin/cmake --build . -- -j$(nproc) ``` 编译完成,在当前`build`文件夹下的`ninja`就是最终产物了. ### PS:关于使用动态链接编译 **由于`musl`不支持 `pthread_setaffinity_np`(`Linux`的`CPU`亲和性`API`,`musl`没有实现),所以无法使用动态链接版本。**