diff --git a/CMakeLists.txt b/CMakeLists.txt index 8a3bb34..152520e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,59 +1,20 @@ +cmake_minimum_required(VERSION 3.20) -cmake_minimum_required(VERSION 3.15) - -option(MSDF_ATLAS_GEN_BUILD_STANDALONE "Build the msdf-atlas-gen standalone executable" ON) -option(MSDF_ATLAS_GEN_MSDFGEN_EXTERNAL "Do not build the msdfgen submodule but find it as an external package" OFF) -if(NOT MSDF_ATLAS_GEN_MSDFGEN_EXTERNAL) - set(MSDFGEN_BUILD_STANDALONE OFF CACHE BOOL "Build the msdfgen standalone executable") - set(MSDFGEN_USE_OPENMP OFF CACHE INTERNAL "Build with OpenMP support for multithreaded code (disabled for atlas gen)" FORCE) - set(MSDFGEN_USE_CPP11 ON CACHE INTERNAL "Build with C++11 enabled (always enabled for atlas gen)" FORCE) - set(MSDFGEN_INSTALL OFF CACHE BOOL "Generate installation target for msdfgen") -endif() - -project(msdf-atlas-gen VERSION 1.2 LANGUAGES CXX) - -find_package(Threads REQUIRED) - -if(MSDF_ATLAS_GEN_MSDFGEN_EXTERNAL) - find_package(msdfgen REQUIRED) -else() - add_subdirectory(msdfgen) -endif() +file(GLOB_RECURSE MSDFGEN_CORE_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/msdfgen "core/*.h" "core/*.hpp") +file(GLOB_RECURSE MSDFGEN_CORE_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/msdfgen "core/*.cpp") +file(GLOB_RECURSE MSDFGEN_EXT_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/msdfgen "ext/*.h" "ext/*.hpp") +file(GLOB_RECURSE MSDFGEN_EXT_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/msdfgen "ext/*.cpp" "lib/*.cpp") file(GLOB_RECURSE MSDF_ATLAS_GEN_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "msdf-atlas-gen/*.h" "msdf-atlas-gen/*.hpp") file(GLOB_RECURSE MSDF_ATLAS_GEN_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "msdf-atlas-gen/*.cpp") -# msdf-atlas-gen library -add_library(msdf-atlas-gen ${MSDF_ATLAS_GEN_HEADERS} ${MSDF_ATLAS_GEN_SOURCES}) -add_library(msdf-atlas-gen::msdf-atlas-gen ALIAS msdf-atlas-gen) -set_target_properties(msdf-atlas-gen PROPERTIES PUBLIC_HEADER "${MSDF_ATLAS_GEN_HEADERS}") -target_include_directories(msdf-atlas-gen - INTERFACE - $ - PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/msdfgen/include # for lodepng.h - ${CMAKE_CURRENT_SOURCE_DIR}/artery-font-format -) +target_sources(${PROJECT_NAME} PUBLIC + MSDFGEN_CORE_HEADERS + MSDFGEN_CORE_SOURCES + MSDFGEN_EXT_HEADERS + MSDFGEN_EXT_SOURCES + MSDF_ATLAS_GEN_HEADERS + MSDF_ATLAS_GEN_SOURCES + ) -target_compile_features(msdf-atlas-gen PUBLIC cxx_std_11) -target_link_libraries(msdf-atlas-gen PUBLIC Threads::Threads msdfgen::msdfgen) -set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT msdf-atlas-gen) -# msdf-atlas-gen standalone executable -if(MSDF_ATLAS_GEN_BUILD_STANDALONE) - set(MSDF_ATLAS_GEN_STANDALONE_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/msdf-atlas-gen/main.cpp") - if(MSVC) - set(MSDF_ATLAS_GEN_STANDALONE_SOURCES ${MSDF_ATLAS_GEN_STANDALONE_SOURCES} "${CMAKE_CURRENT_SOURCE_DIR}/msdf-atlas-gen.rc") - endif() - add_executable(msdf-atlas-gen-standalone ${MSDF_ATLAS_GEN_STANDALONE_SOURCES}) - target_compile_definitions(msdf-atlas-gen-standalone PUBLIC MSDF_ATLAS_STANDALONE) - set_target_properties(msdf-atlas-gen-standalone PROPERTIES - OUTPUT_NAME msdf-atlas-gen - ARCHIVE_OUTPUT_NAME msdf-atlas-gen-standalone - # Avoid deleting msdf-atlas-gen.lib during clean - ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" - ) - target_link_libraries(msdf-atlas-gen-standalone PUBLIC msdf-atlas-gen::msdf-atlas-gen) - set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT msdf-atlas-gen-standalone) -endif()