Skip to content

Instantly share code, notes, and snippets.

@jultan
Forked from HiImJulien/clang_windows_cross.cmake
Created January 5, 2023 07:54
Show Gist options
  • Select an option

  • Save jultan/06c65b873139cca904f5c2225cfb0c90 to your computer and use it in GitHub Desktop.

Select an option

Save jultan/06c65b873139cca904f5c2225cfb0c90 to your computer and use it in GitHub Desktop.

Revisions

  1. @HiImJulien HiImJulien created this gist Mar 21, 2020.
    58 changes: 58 additions & 0 deletions clang_windows_cross.cmake
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,58 @@
    # Cross toolchain configuration for using clang-cl.

    set(CMAKE_SYSTEM_NAME Windows)
    set(CMAKE_SYSTEM_VERSION 10.0)
    set(CMAKE_SYSTEM_PROCESSOR AMD64)

    set(CMAKE_C_COMPILER "/usr/bin/clang-cl-9")
    set(CMAKE_CXX_COMPILER "/usr/bin/clang-cl-9")
    set(CMAKE_LINKER "/usr/bin/lld-link-9")

    set(MSVC_BASE "/mnt/c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2019/Community/VC/Tools/MSVC/14.23.28105")
    set(MSVC_INCLUDE "${MSVC_BASE}/include")
    set(MSVC_LIB "${MSVC_BASE}/lib")

    set(WINSDK_BASE "/mnt/c/Program\ Files\ \(x86\)/Windows\ Kits/10")
    set(WINSDK_VER "10.0.18362.0")
    set(WINSDK_INCLUDE "${WINSDK_BASE}/Include/${WINSDK_VER}")
    set(WINSDK_LIB "${WINSDK_BASE}/lib/${WINSDK_VER}")

    set(COMPILE_FLAGS
    -D_CRT_SECURE_NO_WARNINGS
    -imsvc "'${MSVC_INCLUDE}'"
    -imsvc "'${WINSDK_INCLUDE}/ucrt'"
    -imsvc "'${WINSDK_INCLUDE}/shared'"
    -imsvc "'${WINSDK_INCLUDE}/um'"
    -imsvc "'${WINSDK_INCLUDE}/winrt'"
    )

    string(REPLACE ";" " " COMPILE_FLAGS "${COMPILE_FLAGS}")

    set(_CMAKE_C_FLAGS_INITIAL "${CMAKE_C_FLAGS}" CACHE STRING "")
    set(CMAKE_C_FLAGS "${_CMAKE_C_FLAGS_INITIAL} ${COMPILE_FLAGS}" CACHE STRING "" FORCE)

    set(_CMAKE_CXX_FLAGS_INITIAL "${CMAKE_C_FLAGS}" CACHE STRING "")
    set(CMAKE_CXX_FLAGS "${_CMAKE_CXX_FLAGS_INITIAL} ${COMPILE_FLAGS}" CACHE STRING "" FORCE)

    set(LINK_FLAGS
    /manifest:no
    -libpath:"${MSVC_LIB}/x64"
    -libpath:"${WINSDK_LIB}/ucrt/x64"
    -libpath:"${WINSDK_LIB}/um/x64"
    )

    string(REPLACE ";" " " LINK_FLAGS "${LINK_FLAGS}")

    set(_CMAKE_EXE_LINKER_FLAGS_INITIAL "${CMAKE_EXE_LINKER_FLAGS}" CACHE STRING "")
    set(CMAKE_EXE_LINKER_FLAGS "${_CMAKE_EXE_LINKER_FLAGS_INITIAL} ${LINK_FLAGS}" CACHE STRING "" FORCE)

    set(_CMAKE_MODULE_LINKER_FLAGS_INITIAL "${CMAKE_MODULE_LINKER_FLAGS}" CACHE STRING "")
    set(CMAKE_MODULE_LINKER_FLAGS "${_CMAKE_MODULE_LINKER_FLAGS_INITIAL} ${LINK_FLAGS}" CACHE STRING "" FORCE)

    set(_CMAKE_SHARED_LINKER_FLAGS_INITIAL "${CMAKE_SHARED_LINKER_FLAGS}" CACHE STRING "")
    set(CMAKE_SHARED_LINKER_FLAGS "${_CMAKE_SHARED_LINKER_FLAGS_INITIAL} ${LINK_FLAGS}" CACHE STRING "" FORCE)

    set(CMAKE_C_STANDARD_LIBRARIES "" CACHE STRING "" FORCE)
    set(CMAKE_CXX_STANDARD_LIBRARIES "" CACHE STRING "" FORCE)

    set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON)