CMakeLists.txt 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
  1. cmake_minimum_required(VERSION 3.15)
  2. include(cmake/version.cmake)
  3. option(MSDFGEN_CORE_ONLY "Only build the core library with no dependencies" OFF)
  4. option(MSDFGEN_BUILD_STANDALONE "Build the msdfgen standalone executable" ON)
  5. option(MSDFGEN_USE_VCPKG "Use vcpkg package manager to link project dependencies" ON)
  6. option(MSDFGEN_USE_OPENMP "Build with OpenMP support for multithreaded code" OFF)
  7. option(MSDFGEN_USE_CPP11 "Build with C++11 enabled" ON)
  8. option(MSDFGEN_USE_SKIA "Build with the Skia library" ON)
  9. option(MSDFGEN_DISABLE_SVG "Disable SVG support" OFF)
  10. option(MSDFGEN_DISABLE_PNG "Disable PNG support" OFF)
  11. option(MSDFGEN_INSTALL "Generate installation target" OFF)
  12. option(MSDFGEN_DYNAMIC_RUNTIME "Link dynamic runtime library instead of static" OFF)
  13. option(BUILD_SHARED_LIBS "Generate dynamic library files instead of static" OFF)
  14. if(MSDFGEN_CORE_ONLY AND MSDFGEN_USE_VCPKG)
  15. message(STATUS "Option MSDFGEN_USE_VCPKG ignored due to MSDFGEN_CORE_ONLY - core has no dependencies")
  16. set(MSDFGEN_USE_VCPKG OFF)
  17. endif()
  18. get_property(MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
  19. if(NOT MULTI_CONFIG AND NOT CMAKE_BUILD_TYPE)
  20. message(STATUS "CMAKE_BUILD_TYPE not set, defaulting to Release")
  21. set(CMAKE_BUILD_TYPE Release)
  22. endif()
  23. if(MSDFGEN_USE_VCPKG)
  24. # Make sure that vcpkg toolchain file is set
  25. if(NOT CMAKE_TOOLCHAIN_FILE)
  26. if(DEFINED ENV{VCPKG_ROOT})
  27. set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake")
  28. else()
  29. message(SEND_ERROR "Vcpkg toolchain not configured. Either set VCPKG_ROOT environment variable or pass -DCMAKE_TOOLCHAIN_FILE=VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake to cmake")
  30. endif()
  31. endif()
  32. # Default to statically linked vcpkg triplet on Windows
  33. if(WIN32 AND NOT VCPKG_TARGET_TRIPLET AND NOT MSDFGEN_DYNAMIC_RUNTIME)
  34. if(CMAKE_GENERATOR_PLATFORM MATCHES "64$" AND NOT CMAKE_GENERATOR_PLATFORM STREQUAL "ARM64")
  35. set(VCPKG_TARGET_TRIPLET "x64-windows-static")
  36. elseif(CMAKE_GENERATOR_PLATFORM MATCHES "32$" OR CMAKE_GENERATOR_PLATFORM STREQUAL "x86")
  37. set(VCPKG_TARGET_TRIPLET "x86-windows-static")
  38. else()
  39. if(CMAKE_GENERATOR_PLATFORM)
  40. message(WARNING "Vcpkg triplet not explicitly specified and could not be deduced. Recommend using -DVCPKG_TARGET_TRIPLET=x64-windows-static or similar")
  41. else()
  42. message(WARNING "Vcpkg triplet not explicitly specified and could not be deduced. Recommend using -A to explicitly select platform (Win32 or x64)")
  43. endif()
  44. endif()
  45. endif()
  46. # Select project features
  47. if(NOT MSDFGEN_VCPKG_FEATURES_SET)
  48. set(VCPKG_MANIFEST_NO_DEFAULT_FEATURES ON)
  49. if(NOT MSDFGEN_CORE_ONLY)
  50. list(APPEND VCPKG_MANIFEST_FEATURES "extensions")
  51. endif()
  52. if(MSDFGEN_BUILD_STANDALONE)
  53. list(APPEND VCPKG_MANIFEST_FEATURES "standalone")
  54. endif()
  55. if(MSDFGEN_USE_SKIA)
  56. list(APPEND VCPKG_MANIFEST_FEATURES "geometry-preprocessing")
  57. endif()
  58. if(MSDFGEN_USE_OPENMP)
  59. list(APPEND VCPKG_MANIFEST_FEATURES "openmp")
  60. endif()
  61. endif()
  62. endif()
  63. # Version is specified in vcpkg.json
  64. project(msdfgen VERSION ${MSDFGEN_VERSION} LANGUAGES C CXX)
  65. if(MSDFGEN_DYNAMIC_RUNTIME)
  66. set(MSDFGEN_MSVC_RUNTIME "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
  67. else()
  68. set(MSDFGEN_MSVC_RUNTIME "MultiThreaded$<$<CONFIG:Debug>:Debug>")
  69. endif()
  70. if(BUILD_SHARED_LIBS)
  71. set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
  72. endif()
  73. if(MAX_WARNING_LEVEL)
  74. if (MSVC)
  75. add_compile_options(/W4)
  76. else()
  77. add_compile_options(-Wall -Wextra -Wpedantic)
  78. endif()
  79. endif()
  80. file(GLOB_RECURSE MSDFGEN_C_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "c/*.h")
  81. file(GLOB_RECURSE MSDFGEN_C_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "c/*.c")
  82. file(GLOB_RECURSE MSDFGEN_CORE_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "core/*.h" "core/*.hpp")
  83. file(GLOB_RECURSE MSDFGEN_CORE_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "core/*.cpp")
  84. file(GLOB_RECURSE MSDFGEN_EXT_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "ext/*.h" "ext/*.hpp")
  85. file(GLOB_RECURSE MSDFGEN_EXT_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "ext/*.cpp" "lib/*.cpp")
  86. # C library
  87. add_library(msdfgen-c ${MSDFGEN_C_HEADERS} ${MSDFGEN_C_SOURCES})
  88. add_library(msdfgen::msdfgen-c ALIAS msdfgen-c)
  89. set_target_properties(msdfgen-c PROPERTIES PUBLIC_HEADER "${MSDFGEN_C_HEADERS}")
  90. set_property(TARGET msdfgen-c PROPERTY MSVC_RUNTIME_LIBRARY "${MSDFGEN_MSVC_RUNTIME}")
  91. target_compile_definitions(msdfgen-c PUBLIC
  92. MSDFGEN_VERSION=${MSDFGEN_VERSION}
  93. MSDFGEN_VERSION_MAJOR=${MSDFGEN_VERSION_MAJOR}
  94. MSDFGEN_VERSION_MINOR=${MSDFGEN_VERSION_MINOR}
  95. MSDFGEN_VERSION_REVISION=${MSDFGEN_VERSION_REVISION}
  96. MSDFGEN_COPYRIGHT_YEAR=${MSDFGEN_COPYRIGHT_YEAR}
  97. )
  98. target_include_directories(msdfgen-c INTERFACE
  99. $<INSTALL_INTERFACE:include/msdfgen>
  100. $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/>
  101. )
  102. # Core library
  103. add_library(msdfgen-core "${CMAKE_CURRENT_SOURCE_DIR}/msdfgen.h" ${MSDFGEN_CORE_HEADERS} ${MSDFGEN_CORE_SOURCES})
  104. add_library(msdfgen::msdfgen-core ALIAS msdfgen-core)
  105. set_target_properties(msdfgen-core PROPERTIES PUBLIC_HEADER "${MSDFGEN_CORE_HEADERS}")
  106. set_property(TARGET msdfgen-core PROPERTY MSVC_RUNTIME_LIBRARY "${MSDFGEN_MSVC_RUNTIME}")
  107. target_compile_definitions(msdfgen-core PUBLIC
  108. MSDFGEN_VERSION=${MSDFGEN_VERSION}
  109. MSDFGEN_VERSION_MAJOR=${MSDFGEN_VERSION_MAJOR}
  110. MSDFGEN_VERSION_MINOR=${MSDFGEN_VERSION_MINOR}
  111. MSDFGEN_VERSION_REVISION=${MSDFGEN_VERSION_REVISION}
  112. MSDFGEN_COPYRIGHT_YEAR=${MSDFGEN_COPYRIGHT_YEAR}
  113. )
  114. target_include_directories(msdfgen-core INTERFACE
  115. $<INSTALL_INTERFACE:include/msdfgen>
  116. $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/>
  117. )
  118. set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT msdfgen-core)
  119. if(MSDFGEN_USE_CPP11)
  120. target_compile_features(msdfgen-core PUBLIC cxx_std_11)
  121. target_compile_definitions(msdfgen-core PUBLIC MSDFGEN_USE_CPP11)
  122. endif()
  123. if(MSDFGEN_USE_OPENMP)
  124. # Note: Clang doesn't support OpenMP by default...
  125. find_package(OpenMP REQUIRED COMPONENTS CXX)
  126. target_compile_definitions(msdfgen-core PUBLIC MSDFGEN_USE_OPENMP)
  127. target_link_libraries(msdfgen-core PUBLIC OpenMP::OpenMP_CXX)
  128. endif()
  129. if(BUILD_SHARED_LIBS AND WIN32)
  130. target_compile_definitions(msdfgen-core PRIVATE "MSDFGEN_PUBLIC=__declspec(dllexport)")
  131. target_compile_definitions(msdfgen-core INTERFACE "MSDFGEN_PUBLIC=__declspec(dllimport)")
  132. else()
  133. target_compile_definitions(msdfgen-core PUBLIC MSDFGEN_PUBLIC=)
  134. endif()
  135. # Extensions library
  136. if(NOT MSDFGEN_CORE_ONLY)
  137. if(NOT TARGET Freetype::Freetype)
  138. find_package(Freetype REQUIRED)
  139. endif()
  140. if(NOT MSDFGEN_DISABLE_SVG AND NOT TARGET tinyxml2::tinyxml2)
  141. find_package(tinyxml2 REQUIRED)
  142. endif()
  143. if(NOT MSDFGEN_DISABLE_PNG AND NOT TARGET PNG::PNG)
  144. find_package(PNG REQUIRED)
  145. endif()
  146. add_library(msdfgen-ext "${CMAKE_CURRENT_SOURCE_DIR}/msdfgen-ext.h" ${MSDFGEN_EXT_HEADERS} ${MSDFGEN_EXT_SOURCES})
  147. add_library(msdfgen::msdfgen-ext ALIAS msdfgen-ext)
  148. set_target_properties(msdfgen-ext PROPERTIES PUBLIC_HEADER "${MSDFGEN_EXT_HEADERS}")
  149. set_property(TARGET msdfgen-ext PROPERTY MSVC_RUNTIME_LIBRARY "${MSDFGEN_MSVC_RUNTIME}")
  150. target_compile_definitions(msdfgen-ext INTERFACE MSDFGEN_EXTENSIONS)
  151. if(NOT MSDFGEN_DISABLE_SVG)
  152. target_compile_definitions(msdfgen-ext PUBLIC MSDFGEN_USE_TINYXML2)
  153. target_link_libraries(msdfgen-ext PRIVATE tinyxml2::tinyxml2)
  154. else()
  155. target_compile_definitions(msdfgen-ext PUBLIC MSDFGEN_DISABLE_SVG)
  156. endif()
  157. if(NOT MSDFGEN_DISABLE_PNG)
  158. target_compile_definitions(msdfgen-ext PUBLIC MSDFGEN_USE_LIBPNG)
  159. target_link_libraries(msdfgen-ext PRIVATE PNG::PNG)
  160. else()
  161. target_compile_definitions(msdfgen-ext PUBLIC MSDFGEN_DISABLE_PNG)
  162. endif()
  163. if(MSDFGEN_DISABLE_VARIABLE_FONTS)
  164. target_compile_definitions(msdfgen-ext PUBLIC MSDFGEN_DISABLE_VARIABLE_FONTS)
  165. endif()
  166. target_link_libraries(msdfgen-ext PRIVATE Freetype::Freetype msdfgen::msdfgen-core)
  167. target_include_directories(msdfgen-ext
  168. PUBLIC
  169. $<INSTALL_INTERFACE:include/msdfgen>
  170. $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
  171. )
  172. set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT msdfgen-ext)
  173. if(MSDFGEN_USE_SKIA)
  174. set(MSDFGEN_SKIA_LIB skia)
  175. set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
  176. set(THREADS_PREFER_PTHREAD_FLAG TRUE)
  177. find_package(Threads REQUIRED)
  178. if(NOT TARGET skia)
  179. if(MSDFGEN_USE_VCPKG)
  180. find_package(unofficial-skia REQUIRED)
  181. set(MSDFGEN_SKIA_LIB unofficial::skia::skia)
  182. else()
  183. find_package(skia REQUIRED)
  184. endif()
  185. endif()
  186. target_compile_features(msdfgen-ext PUBLIC cxx_std_17)
  187. target_compile_definitions(msdfgen-ext PUBLIC MSDFGEN_USE_SKIA)
  188. target_link_libraries(msdfgen-ext PRIVATE Threads::Threads ${MSDFGEN_SKIA_LIB})
  189. endif()
  190. if(BUILD_SHARED_LIBS AND WIN32)
  191. target_compile_definitions(msdfgen-ext PRIVATE "MSDFGEN_EXT_PUBLIC=__declspec(dllexport)")
  192. target_compile_definitions(msdfgen-ext INTERFACE "MSDFGEN_EXT_PUBLIC=__declspec(dllimport)")
  193. else()
  194. target_compile_definitions(msdfgen-ext PUBLIC MSDFGEN_EXT_PUBLIC=)
  195. endif()
  196. add_library(msdfgen-full INTERFACE)
  197. add_library(msdfgen::msdfgen ALIAS msdfgen-full)
  198. target_link_libraries(msdfgen-full INTERFACE msdfgen::msdfgen-core msdfgen::msdfgen-ext)
  199. else()
  200. add_library(msdfgen::msdfgen ALIAS msdfgen-core)
  201. endif()
  202. # Standalone executable
  203. if(MSDFGEN_BUILD_STANDALONE)
  204. set(MSDFGEN_STANDALONE_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp")
  205. if(MSVC)
  206. set(MSDFGEN_STANDALONE_SOURCES ${MSDFGEN_STANDALONE_SOURCES} "${CMAKE_CURRENT_SOURCE_DIR}/msdfgen.rc")
  207. endif()
  208. add_executable(msdfgen ${MSDFGEN_STANDALONE_SOURCES})
  209. target_compile_definitions(msdfgen PUBLIC MSDFGEN_STANDALONE)
  210. target_compile_definitions(msdfgen PRIVATE MSDFGEN_VERSION_UNDERLINE=${MSDFGEN_VERSION_UNDERLINE})
  211. set_property(TARGET msdfgen PROPERTY MSVC_RUNTIME_LIBRARY "${MSDFGEN_MSVC_RUNTIME}")
  212. target_link_libraries(msdfgen PRIVATE msdfgen::msdfgen)
  213. set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT msdfgen)
  214. endif()
  215. # Hide ZERO_CHECK and ALL_BUILD targets
  216. set_property(GLOBAL PROPERTY USE_FOLDERS ON)
  217. set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER meta)
  218. # Installation
  219. if(MSDFGEN_INSTALL)
  220. include(GNUInstallDirs)
  221. include(CMakePackageConfigHelpers)
  222. set(MSDFGEN_CONFIG_PATH "lib/cmake/msdfgen")
  223. # Generate msdfgen-config.h
  224. if(BUILD_SHARED_LIBS AND WIN32)
  225. set(MSDFGEN_PUBLIC_MACRO_VALUE " __declspec(dllimport)")
  226. else()
  227. set(MSDFGEN_PUBLIC_MACRO_VALUE "")
  228. endif()
  229. set(MSDFGEN_ADDITIONAL_DEFINES "")
  230. if(MSDFGEN_USE_CPP11)
  231. set(MSDFGEN_ADDITIONAL_DEFINES "${MSDFGEN_ADDITIONAL_DEFINES}\n#define MSDFGEN_USE_CPP11")
  232. endif()
  233. if(MSDFGEN_USE_OPENMP)
  234. set(MSDFGEN_ADDITIONAL_DEFINES "${MSDFGEN_ADDITIONAL_DEFINES}\n#define MSDFGEN_USE_OPENMP")
  235. endif()
  236. if(NOT MSDFGEN_CORE_ONLY)
  237. set(MSDFGEN_ADDITIONAL_DEFINES "${MSDFGEN_ADDITIONAL_DEFINES}\n#define MSDFGEN_EXTENSIONS")
  238. if(MSDFGEN_USE_SKIA)
  239. set(MSDFGEN_ADDITIONAL_DEFINES "${MSDFGEN_ADDITIONAL_DEFINES}\n#define MSDFGEN_USE_SKIA")
  240. endif()
  241. if(NOT MSDFGEN_DISABLE_SVG)
  242. set(MSDFGEN_ADDITIONAL_DEFINES "${MSDFGEN_ADDITIONAL_DEFINES}\n#define MSDFGEN_USE_TINYXML2")
  243. else()
  244. set(MSDFGEN_ADDITIONAL_DEFINES "${MSDFGEN_ADDITIONAL_DEFINES}\n#define MSDFGEN_DISABLE_SVG")
  245. endif()
  246. if(NOT MSDFGEN_DISABLE_PNG)
  247. set(MSDFGEN_ADDITIONAL_DEFINES "${MSDFGEN_ADDITIONAL_DEFINES}\n#define MSDFGEN_USE_LIBPNG")
  248. else()
  249. set(MSDFGEN_ADDITIONAL_DEFINES "${MSDFGEN_ADDITIONAL_DEFINES}\n#define MSDFGEN_DISABLE_PNG")
  250. endif()
  251. if(MSDFGEN_DISABLE_VARIABLE_FONTS)
  252. set(MSDFGEN_ADDITIONAL_DEFINES "${MSDFGEN_ADDITIONAL_DEFINES}\n#define MSDFGEN_DISABLE_VARIABLE_FONTS")
  253. endif()
  254. endif()
  255. configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/msdfgen-config.h.in" msdfgen-config.h)
  256. if (NOT MSDFGEN_INSTALL_NO_GLOBAL_INCLUDE)
  257. write_file("${CMAKE_CURRENT_BINARY_DIR}/msdfgen.h" "\n#pragma once\n\n#include \"msdfgen/msdfgen.h\"")
  258. write_file("${CMAKE_CURRENT_BINARY_DIR}/msdfgen-ext.h" "\n#pragma once\n\n#include \"msdfgen/msdfgen-ext.h\"")
  259. endif()
  260. write_basic_package_version_file(
  261. "${CMAKE_CURRENT_BINARY_DIR}/msdfgenConfigVersion.cmake"
  262. VERSION ${PROJECT_VERSION}
  263. COMPATIBILITY SameMajorVersion
  264. )
  265. configure_package_config_file(
  266. "${CMAKE_CURRENT_SOURCE_DIR}/cmake/msdfgenConfig.cmake.in"
  267. ${MSDFGEN_CONFIG_PATH}/msdfgenConfig.cmake
  268. INSTALL_DESTINATION ${MSDFGEN_CONFIG_PATH}
  269. NO_CHECK_REQUIRED_COMPONENTS_MACRO
  270. )
  271. configure_file(
  272. "${CMAKE_CURRENT_SOURCE_DIR}/cmake/msdfgenConfig.cmake.in"
  273. msdfgenConfig.cmake
  274. @ONLY
  275. )
  276. install(FILES "${CMAKE_CURRENT_BINARY_DIR}/msdfgen-config.h" DESTINATION include/msdfgen)
  277. install(FILES "${CMAKE_CURRENT_BINARY_DIR}/msdfgen-config.h" DESTINATION include/msdfgen/msdfgen)
  278. install(TARGETS msdfgen-core EXPORT msdfgenTargets
  279. RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
  280. LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
  281. ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
  282. FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR}
  283. PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/msdfgen/core
  284. )
  285. install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/msdfgen.h" DESTINATION include/msdfgen)
  286. if (NOT MSDFGEN_INSTALL_NO_GLOBAL_INCLUDE)
  287. install(FILES "${CMAKE_CURRENT_BINARY_DIR}/msdfgen.h" DESTINATION include)
  288. endif()
  289. if(MSVC AND BUILD_SHARED_LIBS)
  290. install(FILES $<TARGET_PDB_FILE:msdfgen-core> DESTINATION ${CMAKE_INSTALL_BINDIR} OPTIONAL)
  291. endif()
  292. if(NOT MSDFGEN_CORE_ONLY)
  293. install(TARGETS msdfgen-ext EXPORT msdfgenTargets
  294. RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
  295. LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
  296. ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
  297. FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR}
  298. PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/msdfgen/ext
  299. )
  300. install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/msdfgen-ext.h" DESTINATION include/msdfgen)
  301. if (NOT MSDFGEN_INSTALL_NO_GLOBAL_INCLUDE)
  302. install(FILES "${CMAKE_CURRENT_BINARY_DIR}/msdfgen-ext.h" DESTINATION include)
  303. endif()
  304. if(MSVC AND BUILD_SHARED_LIBS)
  305. install(FILES $<TARGET_PDB_FILE:msdfgen-ext> DESTINATION ${CMAKE_INSTALL_BINDIR} OPTIONAL)
  306. endif()
  307. install(TARGETS msdfgen-full EXPORT msdfgenTargets)
  308. endif()
  309. export(EXPORT msdfgenTargets NAMESPACE msdfgen:: FILE "${CMAKE_CURRENT_BINARY_DIR}/msdfgenTargets.cmake")
  310. install(EXPORT msdfgenTargets FILE msdfgenTargets.cmake NAMESPACE msdfgen:: DESTINATION ${MSDFGEN_CONFIG_PATH})
  311. if(MSDFGEN_BUILD_STANDALONE)
  312. install(TARGETS msdfgen EXPORT msdfgenBinaryTargets DESTINATION ${CMAKE_INSTALL_BINDIR})
  313. if(MSVC)
  314. install(FILES $<TARGET_PDB_FILE:msdfgen> DESTINATION ${CMAKE_INSTALL_BINDIR} OPTIONAL)
  315. endif()
  316. export(EXPORT msdfgenBinaryTargets NAMESPACE msdfgen-standalone:: FILE "${CMAKE_CURRENT_BINARY_DIR}/msdfgenBinaryTargets.cmake")
  317. install(EXPORT msdfgenBinaryTargets FILE msdfgenBinaryTargets.cmake NAMESPACE msdfgen-standalone:: DESTINATION ${MSDFGEN_CONFIG_PATH})
  318. endif()
  319. install(
  320. FILES
  321. "${CMAKE_CURRENT_BINARY_DIR}/${MSDFGEN_CONFIG_PATH}/msdfgenConfig.cmake"
  322. "${CMAKE_CURRENT_BINARY_DIR}/msdfgenConfigVersion.cmake"
  323. DESTINATION ${MSDFGEN_CONFIG_PATH}
  324. )
  325. endif()