Skip to content

Instantly share code, notes, and snippets.

@Hackerl
Created December 31, 2025 08:54
Show Gist options
  • Select an option

  • Save Hackerl/f9a5bb09509a3d30564f2c481763db4f to your computer and use it in GitHub Desktop.

Select an option

Save Hackerl/f9a5bb09509a3d30564f2c481763db4f to your computer and use it in GitHub Desktop.
Update OHOS NDK's LLVM to version 19.1.7 and make it compatible with CMake and vcpkg.

Get Command Line Tools

Download and extract from the official website.

Get Customized LLVM 19

Download and extract from the official website.

Replace LLVM

Delete the sdk/default/openharmony/native/llvm directory in Command Line Tools and replace it with the newly downloaded version.

Adapt CMake

sed -i 's/set(CMAKE_SYSTEM_NAME OHOS)/set(CMAKE_SYSTEM_NAME Linux)/' /opt/command-line-tools/sdk/default/openharmony/native/build/cmake/ohos.toolchain.cmake

Add libc++ Header Path

sed -i 's/set(CMAKE_CXX_FLAGS "${OHOS_C_COMPILER_FLAGS} ${OHOS_CXX_COMPILER_FLAGS} ${CMAKE_CXX_FLAGS} -D__MUSL__)/set(CMAKE_CXX_FLAGS "${OHOS_C_COMPILER_FLAGS} ${OHOS_CXX_COMPILER_FLAGS} ${CMAKE_CXX_FLAGS} -D__MUSL__ -isystem ${OHOS_SDK_NATIVE}/llvm/include/libcxx-ohos/include/c++/v1")/' /opt/command-line-tools/sdk/default/openharmony/native/build/cmake/ohos.toolchain.cmake

Compile

cat <<EOF > arm64-ohos.cmake
set(VCPKG_TARGET_ARCHITECTURE arm64)
set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE static)

set(VCPKG_CMAKE_SYSTEM_NAME Linux)
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE /opt/command-line-tools/sdk/default/openharmony/native/build/cmake/ohos.toolchain.cmake)
EOF

cmake -B build -DCMAKE_TOOLCHAIN_FILE="/opt/vcpkg/scripts/buildsystems/vcpkg.cmake" -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE="/opt/command-line-tools/sdk/default/openharmony/native/build/cmake/ohos.toolchain.cmake" -DVCPKG_OVERLAY_TRIPLETS=$(pwd) -DVCPKG_TARGET_TRIPLET=arm64-ohos
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment