cmake指定不同版本的mingw编译,实现思路: 通过指定编译链的方式实现即可。
案例如下: mingw530的arch=i686
,mingw810的arch=x86_64
,通过指定不同版本的mingw编译链,实现程序的32bit
和64bit
的编译。
# 使用mingw v5.3.0进行编译
cmake -G"MinGW Makefiles" -DCMAKE_TOOLCHAIN_FILE="D:Desktop/test/win32.cmake" ..
# 使用mingw v8.1.0进行编译
cmake -G"MinGW Makefiles" -DCMAKE_TOOLCHAIN_FILE="D:Desktop/test/win64.cmake" ..
-
main.c
#include <stdio.h> int main() { if (sizeof(void*) == 8) { printf("64 bit\n"); } else { printf("32 bit\n"); } return 0; }
-
CMakeLists.txt
cmake_minimum_required(VERSION 3.5) set(PROJECT_NAME main) project(${PROJECT_NAME}) add_executable(${PROJECT_NAME} ${PROJECT_SOURCE_DIR}/main.c)
-
win32.cmake
set(CMAKE_C_COMPILER "D:/mingw530/bin/gcc.exe") set(CMAKE_CXX_COMPILER "D:/mingw530/bin/g++.exe")
-
win64.cmake
set(CMAKE_C_COMPILER "D:/mingw810/bin/gcc.exe") set(CMAKE_CXX_COMPILER "D:/mingw810/bin/g++.exe")