|
@@ -9,6 +9,7 @@ option(MSDFGEN_USE_OPENMP "Build with OpenMP support for multithreaded code" OFF
|
|
|
option(MSDFGEN_USE_CPP11 "Build with C++11 enabled" ON)
|
|
|
option(MSDFGEN_USE_SKIA "Build with the Skia library" ON)
|
|
|
option(MSDFGEN_INSTALL "Generate installation target" OFF)
|
|
|
+option(MSDFGEN_DYNAMIC_RUNTIME "Link dynamic runtime library instead of static" OFF)
|
|
|
option(BUILD_SHARED_LIBS "Generate dynamic library files instead of static" OFF)
|
|
|
|
|
|
if(MSDFGEN_CORE_ONLY AND MSDFGEN_BUILD_STANDALONE)
|
|
@@ -26,6 +27,12 @@ if(NOT MULTI_CONFIG AND NOT CMAKE_BUILD_TYPE)
|
|
|
set(CMAKE_BUILD_TYPE Release)
|
|
|
endif()
|
|
|
|
|
|
+if(MSDFGEN_DYNAMIC_RUNTIME)
|
|
|
+ set(MSDFGEN_MSVC_RUNTIME "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
|
|
|
+else()
|
|
|
+ set(MSDFGEN_MSVC_RUNTIME "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
|
|
+endif()
|
|
|
+
|
|
|
if(BUILD_SHARED_LIBS)
|
|
|
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
|
|
endif()
|
|
@@ -40,13 +47,17 @@ if(MSDFGEN_USE_VCPKG)
|
|
|
endif()
|
|
|
endif()
|
|
|
# Default to statically linked vcpkg triplet on Windows
|
|
|
- if(WIN32 AND NOT VCPKG_TARGET_TRIPLET AND NOT BUILD_SHARED_LIBS)
|
|
|
- if(CMAKE_GENERATOR_PLATFORM MATCHES "64$")
|
|
|
+ if(WIN32 AND NOT VCPKG_TARGET_TRIPLET AND NOT MSDFGEN_DYNAMIC_RUNTIME)
|
|
|
+ if(CMAKE_GENERATOR_PLATFORM MATCHES "64$" AND NOT CMAKE_GENERATOR_PLATFORM STREQUAL "ARM64")
|
|
|
set(VCPKG_TARGET_TRIPLET "x64-windows-static")
|
|
|
elseif(CMAKE_GENERATOR_PLATFORM MATCHES "32$" OR CMAKE_GENERATOR_PLATFORM STREQUAL "x86")
|
|
|
set(VCPKG_TARGET_TRIPLET "x86-windows-static")
|
|
|
else()
|
|
|
- message(WARNING "Vcpkg triplet not explicitly specified and could not be deduced. Recommend using -DVCPKG_TARGET_TRIPLET=x86-windows-static or similar")
|
|
|
+ if(CMAKE_GENERATOR_PLATFORM)
|
|
|
+ message(WARNING "Vcpkg triplet not explicitly specified and could not be deduced. Recommend using -DVCPKG_TARGET_TRIPLET=x64-windows-static or similar")
|
|
|
+ else()
|
|
|
+ message(WARNING "Vcpkg triplet not explicitly specified and could not be deduced. Recommend using -A to explicitly select platform (Win32 or x64)")
|
|
|
+ endif()
|
|
|
endif()
|
|
|
endif()
|
|
|
# Select project features
|
|
@@ -79,7 +90,7 @@ file(GLOB_RECURSE MSDFGEN_EXT_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "ext/
|
|
|
add_library(msdfgen-core "${CMAKE_CURRENT_SOURCE_DIR}/msdfgen.h" ${MSDFGEN_CORE_HEADERS} ${MSDFGEN_CORE_SOURCES})
|
|
|
add_library(msdfgen::msdfgen-core ALIAS msdfgen-core)
|
|
|
set_target_properties(msdfgen-core PROPERTIES PUBLIC_HEADER "${MSDFGEN_CORE_HEADERS}")
|
|
|
-set_property(TARGET msdfgen-core PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
|
|
+set_property(TARGET msdfgen-core PROPERTY MSVC_RUNTIME_LIBRARY "${MSDFGEN_MSVC_RUNTIME}")
|
|
|
target_compile_definitions(msdfgen-core PUBLIC
|
|
|
MSDFGEN_VERSION=${MSDFGEN_VERSION}
|
|
|
MSDFGEN_VERSION_MAJOR=${MSDFGEN_VERSION_MAJOR}
|
|
@@ -127,7 +138,7 @@ if(NOT MSDFGEN_CORE_ONLY)
|
|
|
add_library(msdfgen-ext "${CMAKE_CURRENT_SOURCE_DIR}/msdfgen-ext.h" ${MSDFGEN_EXT_HEADERS} ${MSDFGEN_EXT_SOURCES})
|
|
|
add_library(msdfgen::msdfgen-ext ALIAS msdfgen-ext)
|
|
|
set_target_properties(msdfgen-ext PROPERTIES PUBLIC_HEADER "${MSDFGEN_EXT_HEADERS}")
|
|
|
- set_property(TARGET msdfgen-ext PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
|
|
+ set_property(TARGET msdfgen-ext PROPERTY MSVC_RUNTIME_LIBRARY "${MSDFGEN_MSVC_RUNTIME}")
|
|
|
target_compile_definitions(msdfgen-ext PUBLIC MSDFGEN_USE_LIBPNG)
|
|
|
target_link_libraries(msdfgen-ext PRIVATE msdfgen::msdfgen-core Freetype::Freetype tinyxml2::tinyxml2 PNG::PNG)
|
|
|
target_include_directories(msdfgen-ext
|
|
@@ -171,7 +182,7 @@ if(MSDFGEN_BUILD_STANDALONE)
|
|
|
add_executable(msdfgen ${MSDFGEN_STANDALONE_SOURCES})
|
|
|
target_compile_definitions(msdfgen PUBLIC MSDFGEN_STANDALONE)
|
|
|
target_compile_definitions(msdfgen PRIVATE MSDFGEN_VERSION_UNDERLINE=${MSDFGEN_VERSION_UNDERLINE})
|
|
|
- set_property(TARGET msdfgen PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
|
|
+ set_property(TARGET msdfgen PROPERTY MSVC_RUNTIME_LIBRARY "${MSDFGEN_MSVC_RUNTIME}")
|
|
|
target_link_libraries(msdfgen PRIVATE msdfgen::msdfgen)
|
|
|
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT msdfgen)
|
|
|
endif()
|