diff --git a/CMakeLists.txt b/CMakeLists.txt index 34369c4..d103eec 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,7 +8,27 @@ find_package(Qt5 COMPONENTS Core Widgets CONFIG REQUIRED) add_subdirectory(libxiv) -find_package(fmt) +include(FetchContent) + +find_package(fmt QUIET) + +if(TARGET fmt::fmt) + message("Using system library for fmt") + + set(LIBRARIES fmt::fmt ${LIBRARIES}) +else() + message("Using built-in fmt") + + FetchContent_Declare( + fmt + GIT_REPOSITORY https://github.com/fmtlib/fmt + GIT_TAG master + ) + + FetchContent_MakeAvailable(fmt) + + set(LIBRARIES fmt::fmt ${LIBRARIES}) +endif() add_executable(novus src/main.cpp @@ -16,4 +36,21 @@ add_executable(novus target_include_directories(novus PUBLIC include) -target_link_libraries(novus PUBLIC libxiv fmt::fmt z Qt5::Core Qt5::Widgets) \ No newline at end of file +target_link_libraries(novus PUBLIC libxiv ${LIBRARIES} Qt5::Core Qt5::Widgets) + +install(TARGETS novus + DESTINATION "${INSTALL_BIN_PATH}") + +if(WIN32) + get_target_property(QMAKE_EXE Qt5::qmake IMPORTED_LOCATION) + get_filename_component(QT_BIN_DIR "${QMAKE_EXE}" DIRECTORY) + + find_program(WINDEPLOYQT_ENV_SETUP qtenv2.bat HINTS "${QT_BIN_DIR}") + find_program(WINDEPLOYQT_EXECUTABLE windeployqt HINTS "${QT_BIN_DIR}") + + # Run windeployqt immediately after build + add_custom_command(TARGET novus + POST_BUILD + COMMAND "${WINDEPLOYQT_ENV_SETUP}" && "${WINDEPLOYQT_EXECUTABLE}" \"$\" + ) +endif()