# the name of the target operating system set(CMAKE_SYSTEM_NAME Windows) set(CMAKE_CROSSCOMPILING TRUE) set(MXE_PREFIX ${CMAKE_CURRENT_LIST_DIR}/mxe/usr) set(COMPILER_PREFIX "x86_64-w64-mingw32.static") # for find_library() set(CMAKE_LIBRARY_ARCHITECTURE ${COMPILER_PREFIX}) # WA for vcpkg + mingw cross building # - you can install powershell: `yay -S powershell` # - or just skip unneeded in most cases step # - note, Z_xxx vairalble are internal one set(Z_VCPKG_POWERSHELL_PATH echo) if (VCPKG_INSTALLED_DIR OR VCPKG_CHAINLOAD_TOOLCHAIN_FILE OR VCPKG_MANIFEST_DIR) set(IS_VCPKG True) endif() # which compilers to use for C and C++ find_program(CMAKE_RC_COMPILER NAMES ${MXE_PREFIX}/bin/${COMPILER_PREFIX}-windres) find_program(CMAKE_C_COMPILER NAMES ${MXE_PREFIX}/bin/${COMPILER_PREFIX}-gcc) find_program(CMAKE_CXX_COMPILER NAMES ${MXE_PREFIX}/bin/${COMPILER_PREFIX}-g++) if (NOT IS_VCPKG) find_program(PKG_CONFIG_EXECUTABLE NAMES ${MXE_PREFIX}/bin/${COMPILER_PREFIX}-pkg-config) endif() set(CMAKE_C_COMPILER_WORKS On) set(CMAKE_CXX_COMPILER_WORKS On) # here is the target environment located set(USER_ROOT_PATH $ENV{HOME}) #set(CMAKE_FIND_ROOT_PATH ${MXE_PREFIX}/${COMPILER_PREFIX} ${USER_ROOT_PATH}) list(APPEND CMAKE_FIND_ROOT_PATH ${MXE_PREFIX}/${COMPILER_PREFIX} ${USER_ROOT_PATH}) SET(CMAKE_SYSROOT ${MXE_PREFIX}) # adjust the default behaviour of the FIND_XXX() commands: # search headers and libraries in the target environment, search # programs in the host environment set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) # We want to install alongside the compiler by default set(CMAKE_INSTALL_PREFIX ${MXE_PREFIX}) if (VCPKG_INSTALLED_DIR) # TBD: make more clean # WA for vcpkg set(CMAKE_EXE_LINKER_FLAGS "-L${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib") set(CMAKE_SHARED_LINKER_FLAGS "-L${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib") endif() # WA for MXE if (NOT IS_VCPKG) set(CMAKE_EXE_LINKER_FLAGS "-liconv") set(CMAKE_SHARED_LINKER_FLAGS "-liconv") endif() # DEBUG #get_cmake_property(_variableNames VARIABLES) #list (SORT _variableNames) #foreach (_variableName ${_variableNames}) # message(STATUS "${_variableName}=${${_variableName}}") #endforeach()