Monday, March 2, 2026

imgui cross compiled

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 $@

No comments:

Post a Comment