|
| 1 | + |
| 2 | +#Usage: cmake -DCMAKE_TOOLCHAIN_FILE=mingw-w64-x86_64.cmake |
| 3 | + |
| 4 | +set(CMAKE_SYSTEM_NAME Windows) |
| 5 | + |
| 6 | + |
| 7 | +set(TOOLCHAIN_PREFIX x86_64-w64-mingw32) |
| 8 | + |
| 9 | +# cross compilers to use for C, C++ and Fortran |
| 10 | +set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) |
| 11 | +set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++) |
| 12 | +set(CMAKE_Fortran_COMPILER ${TOOLCHAIN_PREFIX}-gfortran) |
| 13 | +set(CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres) |
| 14 | + |
| 15 | +set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX}) |
| 16 | + |
| 17 | +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) |
| 18 | +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) |
| 19 | +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) |
| 20 | +set(CMAKE_SYSTEM_PROCESSOR x86_64) |
| 21 | +set(CMAKE_SYSTEM_VERSION 10) |
| 22 | + |
| 23 | + |
| 24 | +function (createSymLink target symlink) |
| 25 | + cmake_path(GET symlink PARENT_PATH parentPath) |
| 26 | + file(MAKE_DIRECTORY ${parentPath}) |
| 27 | + execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${target} ${symlink}) |
| 28 | +endfunction() |
| 29 | + |
| 30 | +# MINGW defaults max SDK version to Windows server 2003 (0x0502) |
| 31 | +# For supporting newer functionality, overriding is needed, otherwise code won't compile |
| 32 | +# override with Windows 10 (0x0A00) SDK version |
| 33 | +add_compile_definitions(_WIN32_WINNT=0x0A00) |
| 34 | + |
| 35 | +set(CASE_SENSITIVE_FIX_FOR_MINGW_PATH ${CMAKE_CURRENT_BINARY_DIR}/mingw-w64) |
| 36 | +createSymLink(/usr/x86_64-w64-mingw32/include/windows.h ${CASE_SENSITIVE_FIX_FOR_MINGW_PATH}/Include/Windows.h) |
| 37 | +createSymLink(/usr/x86_64-w64-mingw32/include/shlobj.h ${CASE_SENSITIVE_FIX_FOR_MINGW_PATH}/Include/ShlObj.h) |
| 38 | +createSymLink(/usr/x86_64-w64-mingw32/include/dbghelp.h ${CASE_SENSITIVE_FIX_FOR_MINGW_PATH}/Include/DbgHelp.h) |
| 39 | +createSymLink(/usr/x86_64-w64-mingw32/include/commctrl.h ${CASE_SENSITIVE_FIX_FOR_MINGW_PATH}/Include/CommCtrl.h) |
| 40 | +createSymLink(/usr/x86_64-w64-mingw32/include/shellscalingapi.h ${CASE_SENSITIVE_FIX_FOR_MINGW_PATH}/Include/ShellScalingApi.h) |
| 41 | +createSymLink(/usr/x86_64-w64-mingw32/include/psapi.h ${CASE_SENSITIVE_FIX_FOR_MINGW_PATH}/Include/Psapi.h) |
| 42 | + |
| 43 | +include_directories(${CASE_SENSITIVE_FIX_FOR_MINGW_PATH}/Include) |
0 commit comments