| 1 |
# how to build: |
| 2 |
# mkdir build; cd build |
| 3 |
# cmake .. -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=../mingw.toolchain.cmake |
| 4 |
# cmake --build . |
| 5 |
|
| 6 |
# target |
| 7 |
set(CMAKE_SYSTEM_NAME Windows) |
| 8 |
|
| 9 |
# option |
| 10 |
option(USE_GCC_32 "use gcc 32bit compiler" OFF) |
| 11 |
option(USE_GCC_64 "use gcc 64bit compiler" OFF) |
| 12 |
option(USE_CLANG_32 "use clang 32bit compiler" OFF) |
| 13 |
option(USE_CLANG_64 "use clang 64bit compiler" OFF) |
| 14 |
|
| 15 |
if((NOT USE_GCC_32) AND (NOT USE_GCC_64) AND |
| 16 |
(NOT USE_CLANG_32) AND (NOT USE_CLANG_64)) |
| 17 |
# default compiler |
| 18 |
set(USE_GCC_32 ON) |
| 19 |
endif() |
| 20 |
|
| 21 |
if(USE_GCC_32 OR USE_CLANG_32) |
| 22 |
set(PREFIX "i686-w64-mingw32-") |
| 23 |
set(CMAKE_FIND_ROOT_PATH /usr/i686-w64-mingw32) |
| 24 |
endif() |
| 25 |
if(USE_GCC_64 OR USE_CLANG_64) |
| 26 |
set(PREFIX "x86_64-w64-mingw32-") |
| 27 |
set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32) |
| 28 |
endif() |
| 29 |
|
| 30 |
set(THREAD_MODEL "-win32") |
| 31 |
#set(THREAD_MODEL "-posix") |
| 32 |
if(${CMAKE_COMMAND} MATCHES "msys2") |
| 33 |
# msys2にはposix版のみ |
| 34 |
unset(THREAD_MODEL) |
| 35 |
endif() |
| 36 |
|
| 37 |
if(USE_GCC_32 OR USE_GCC_64) |
| 38 |
set(CMAKE_C_COMPILER ${PREFIX}gcc${THREAD_MODEL}) |
| 39 |
set(CMAKE_CXX_COMPILER ${PREFIX}g++${THREAD_MODEL}) |
| 40 |
set(CMAKE_RC_COMPILER ${PREFIX}windres) |
| 41 |
elseif(USE_CLANG_32 OR USE_CLANG_64) |
| 42 |
set(CMAKE_C_COMPILER ${PREFIX}clang${THREAD_MODEL}) |
| 43 |
set(CMAKE_CXX_COMPILER ${PREFIX}clang++${THREAD_MODEL}) |
| 44 |
set(CMAKE_RC_COMPILER ${PREFIX}windres) |
| 45 |
else() |
| 46 |
message(FATAL_ERROR "check compiler") |
| 47 |
endif() |
| 48 |
|
| 49 |
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) |
| 50 |
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) |
| 51 |
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) |
| 52 |
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) |
| 53 |
|
| 54 |
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_TOOLCHAIN_FILE} CACHE PATH "toolchain file") |