(Windows) Added CMake configuration to make LunaSVG build as a shared library.

This commit is contained in:
Leon Styhre 2022-10-04 17:31:03 +02:00
parent 753fc92944
commit a1fba765c3
3 changed files with 38 additions and 20 deletions

View file

@ -480,7 +480,7 @@ elseif(WIN32)
${PROJECT_SOURCE_DIR}/glew32.dll ${PROJECT_SOURCE_DIR}/glew32.dll
${PROJECT_SOURCE_DIR}/libcurl-x64.dll ${PROJECT_SOURCE_DIR}/libcurl-x64.dll
${PROJECT_SOURCE_DIR}/libfreetype.dll ${PROJECT_SOURCE_DIR}/libfreetype.dll
${PROJECT_SOURCE_DIR}/liblunasvg.a ${PROJECT_SOURCE_DIR}/liblunasvg.dll
${PROJECT_SOURCE_DIR}/libpugixml.dll ${PROJECT_SOURCE_DIR}/libpugixml.dll
${PROJECT_SOURCE_DIR}/libSDL2main.a ${PROJECT_SOURCE_DIR}/libSDL2main.a
${PROJECT_SOURCE_DIR}/librlottie.dll ${PROJECT_SOURCE_DIR}/librlottie.dll

View file

@ -139,6 +139,7 @@ if(WIN32)
../libcrypto-1_1-x64.dll ../libcrypto-1_1-x64.dll
../libcurl-x64.dll ../libcurl-x64.dll
../libssl-1_1-x64.dll ../libssl-1_1-x64.dll
../lunasvg.dll
../MSVCP140.dll ../MSVCP140.dll
../pugixml.dll ../pugixml.dll
../rlottie.dll ../rlottie.dll
@ -160,6 +161,7 @@ if(WIN32)
../libcrypto-1_1-x64.dll ../libcrypto-1_1-x64.dll
../libcurl-x64.dll ../libcurl-x64.dll
../libfreetype.dll ../libfreetype.dll
../liblunasvg.dll
../libpugixml.dll ../libpugixml.dll
../librlottie.dll ../librlottie.dll
../libssl-1_1-x64.dll ../libssl-1_1-x64.dll

View file

@ -6,31 +6,47 @@
# CMake configuration for bundled dependencies built in-tree. # CMake configuration for bundled dependencies built in-tree.
# #
# This makes it possible to set options in subprojects.
set (CMAKE_POLICY_DEFAULT_CMP0077 NEW)
if (WIN32)
# On Windows the build type needs to match the main binary.
if (CMAKE_BUILD_TYPE MATCHES Profiling) if (CMAKE_BUILD_TYPE MATCHES Profiling)
set (CMAKE_BUILD_TYPE Debug) set (CMAKE_BUILD_TYPE Release)
elseif(NOT CMAKE_BUILD_TYPE MATCHES Debug) elseif(NOT CMAKE_BUILD_TYPE MATCHES Debug)
set (CMAKE_BUILD_TYPE Release) set (CMAKE_BUILD_TYPE Release)
endif() endif()
else()
# Always build with optimizations enabled and without debug info.
set (CMAKE_BUILD_TYPE Release)
endif()
# Disabled threading support for rlottie as this functionality actually leads to far worse
# performance. As well there is a bug on Windows that makes rlottie hang forever on application
# shutdown if compiled using MinGW with threading support enabled.
option(LOTTIE_THREAD OFF)
option(LOTTIE_MODULE OFF)
# Only use the compiler and linker flags defined by LunaSVG and rlottie.
unset(CMAKE_CXX_FLAGS) unset(CMAKE_CXX_FLAGS)
unset(CMAKE_EXE_LINKER_FLAGS) unset(CMAKE_EXE_LINKER_FLAGS)
add_subdirectory(lunasvg) if(WIN32)
if(CMAKE_CXX_COMPILER_ID MATCHES MSVC)
# On Windows, rlottie is built as a DLL file. # Disable DLL interface warnings for LunaSVG.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4251")
else()
# Strip the DLL files when building with MinGW.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s")
endif()
if (WIN32) if (WIN32)
set(BUILD_SHARED_LIBS ON) set(BUILD_SHARED_LIBS ON)
else() else()
set(BUILD_SHARED_LIBS OFF) set(BUILD_SHARED_LIBS OFF)
endif() endif()
endif()
add_subdirectory(lunasvg EXCLUDE_FROM_ALL)
# Disable threading support for rlottie as this functionality actually leads to far worse
# performance. As well there is a bug on Windows that makes rlottie hang forever on application
# shutdown if compiled using MinGW with threading support enabled.
option(LOTTIE_THREAD OFF)
option(LOTTIE_MODULE OFF)
if(EMSCRIPTEN) if(EMSCRIPTEN)
set(CMAKE_CXX_FLAGS -pthread) set(CMAKE_CXX_FLAGS -pthread)
@ -38,9 +54,9 @@ endif()
# rlottie generates a lot of annoying compiler warnings that we don't need to show. # rlottie generates a lot of annoying compiler warnings that we don't need to show.
if(CMAKE_CXX_COMPILER_ID MATCHES MSVC) if(CMAKE_CXX_COMPILER_ID MATCHES MSVC)
set(CMAKE_CXX_FLAGS "/wd4244 /wd4251 /wd4267 /wd4530 /wd4996") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4244 /wd4267 /wd4530 /wd4996")
else() else()
set(CMAKE_CXX_FLAGS "-w") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
endif() endif()
add_subdirectory(rlottie EXCLUDE_FROM_ALL) add_subdirectory(rlottie EXCLUDE_FROM_ALL)