tp compile glew
export TRIPLET=x86_64-w64-mingw32
export PREFIX=$HOME/cross/$TRIPLET
make distclean 2>/dev/null || true
make -j SYSTEM=mingw \
CC=$TRIPLET-gcc LD=$TRIPLET-gcc \
AR=$TRIPLET-ar RANLIB=$TRIPLET-ranlib STRIP=$TRIPLET-strip \
glew.lib glew.dll
sudo make SYSTEM=mingw \
CC=x86_64-w64-mingw32-gcc LD=x86_64-w64-mingw32-gcc \
GLEW_DEST=/usr/x86_64-w64-mingw32 \
LIBDIR=/usr/x86_64-w64-mingw32/lib \
INSTALL_BIN_DIR=/usr/x86_64-w64-mingw32/bin \
INSTALL_LIB_DIR=/usr/x86_64-w64-mingw32/lib \
INSTALL_INC_DIR=/usr/x86_64-w64-mingw32/include \
install
to compile glfw-3.4
export TRIPLET=x86_64-w64-mingw32
export PREFIX=/usr/$TRIPLET
cmake -S . -B build-mingw \
-DCMAKE_SYSTEM_NAME=Windows \
-DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc \
-DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ \
-DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32 \
-DBUILD_SHARED_LIBS=ON \
-DGLFW_BUILD_EXAMPLES=OFF -DGLFW_BUILD_TESTS=OFF -DGLFW_BUILD_DOCS=OFF
cmake --build build-mingw
sudo cmake --install build-mingw
to compile imgui
#=============================================================================
# Windows Cross-Compilation Configuration (MinGW)
#=============================================================================
WIN_CXX = x86_64-w64-mingw32-g++
WIN_WINDRES = x86_64-w64-mingw32-windres
WIN_CXXFLAGS = -std=c++17 -Wall -Wextra -O2 -DWIN32 -D_WIN32 -DUNICODE -D_UNICODE
# WIN_CXXFLAGS += -D__REQUIRED_RPCNDR_H_VERSION__=475
WIN_CXXFLAGS += -I. -Iimgui -Iimgui/backends
# Windows libraries (WPD + OpenGL + GLFW)
WIN_LDFLAGS = -static-libgcc -static-libstdc++ -mconsole
WIN_LIBS = -lole32 -loleaut32 -luuid -lpropsys
WIN_LIBS += -L/usr/x86_64-w64-mingw32/lib -lglfw3dll -lopengl32 -lgdi32 -lglew32
WIN_OBJECTS = $(addprefix $(WIN_BUILD_DIR)/, $(WIN_SOURCES:.cpp=.win.o))
WIN_IMGUI_OBJECTS = $(addprefix $(WIN_BUILD_DIR)/, $(IMGUI_SOURCES:.cpp=.win.o))
WIN_TARGET = hello.exe
# Link (Windows)
$(WIN_TARGET): $(WIN_OBJECTS) $(WIN_IMGUI_OBJECTS)
$(WIN_CXX) $^ -o $@ $(WIN_LDFLAGS) $(WIN_LIBS)
# Compile application sources (Windows)
$(WIN_BUILD_DIR)/%.win.o: %.cpp
@mkdir -p $(WIN_BUILD_DIR)
$(WIN_CXX) $(WIN_CXXFLAGS) -c $< -o $@
# Compile ImGui sources (Windows)
$(WIN_BUILD_DIR)/$(IMGUI_DIR)/%.win.o: $(IMGUI_DIR)/%.cpp
@mkdir -p $(WIN_BUILD_DIR)/$(IMGUI_DIR)
$(WIN_CXX) $(WIN_CXXFLAGS) -c $< -o $@
$(WIN_BUILD_DIR)/$(IMGUI_DIR)/backends/%.win.o: $(IMGUI_DIR)/backends/%.cpp
@mkdir -p $(WIN_BUILD_DIR)/$(IMGUI_DIR)/backends
$(WIN_CXX) $(WIN_CXXFLAGS) -c $< -o $@