Resolve WinMain linking issues with CMake

This commit is contained in:
Cameron Cawley
2021-07-05 16:35:43 +01:00
parent b1781f4189
commit 77753c8539
6 changed files with 34 additions and 14 deletions

View File

@@ -19,7 +19,6 @@ add_library(librw_skeleton
imgui/stb_textedit.h
imgui/stb_truetype.h
)
add_library(librw::skeleton ALIAS librw_skeleton)
set_target_properties(librw_skeleton
PROPERTIES
@@ -38,6 +37,20 @@ target_include_directories(librw_skeleton
$<INSTALL_INTERFACE:${LIBRW_INSTALL_INCLUDEDIR}/skeleton>
)
# HACK: When building with MinGW, it's necessary to link to libmingw32.a *before* the library
# that provides WinMain. To work around this, an intermediate target is created when using MinGW
# that specifies the correct linking order.
#
# TODO: Use SDL_main on platforms that require it
if(MINGW AND LIBRW_PLATFORM_D3D9)
add_library(librw_skeleton_main INTERFACE)
find_library(MINGW32_LIBRARY NAMES mingw32)
target_link_libraries(librw_skeleton_main INTERFACE ${MINGW32_LIBRARY} librw_skeleton)
add_library(librw::skeleton ALIAS librw_skeleton_main)
else()
add_library(librw::skeleton ALIAS librw_skeleton)
endif()
if(LIBRW_INSTALL)
install(
FILES

View File

@@ -1,5 +1,8 @@
#ifdef LIBRW_SDL2
#ifdef _WIN32
#define SDL_MAIN_HANDLED
#endif
#include <rw.h>
#include "skeleton.h"

View File

@@ -1,4 +1,5 @@
#ifdef _WIN32
#define SDL_MAIN_HANDLED
#include <windows.h>
#include <rw.h>
#include "skeleton.h"
@@ -291,7 +292,7 @@ SetMousePosition(int x, int y)
#endif
#ifdef RW_OPENGL
#if defined(RW_OPENGL) && !defined(__MINGW32__)
int main(int argc, char *argv[]);
int WINAPI