From a367aba34ae58b526f31e82ad27bf1ab077d4b99 Mon Sep 17 00:00:00 2001 From: edisionnano Date: Sun, 2 Feb 2025 22:06:49 +0200 Subject: [PATCH] CMake Changes Don't specify all .h, .cpp and .ui files independently, use wildcards instead Don't specify QDiskInfo many times, use the PROJECT_NAME variable instead Use qt_add_translations if Qt version is >=6.7, this should be able to also run lupdate but it doesn't; I'm investigating this --- CMakeLists.txt | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ce704ef..84b351e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,19 +20,10 @@ else() find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets) endif() -set(PROJECT_SOURCES - src/main.cpp - src/mainwindow.cpp - src/mainwindow.h - src/mainwindow.ui - src/custombutton.h - src/custombutton.cpp - src/statusdot.h - src/statusdot.cpp - src/jsonparser.h - src/jsonparser.cpp - src/utils.h - src/utils.cpp +file(GLOB_RECURSE PROJECT_SOURCES + src/*.h + src/*.cpp + src/*.ui src/resources.qrc ) @@ -42,7 +33,16 @@ endif() if(ENABLE_TRANSLATIONS) file(GLOB TS_FILES "${CMAKE_SOURCE_DIR}/translations/*.ts") - qt_add_translation(QM_FILES ${TS_FILES}) + if(QT_VERSION_MAJOR GREATER_EQUAL 6 AND QT_VERSION_MINOR GREATER_EQUAL 7) + qt_add_translations(TARGETS ${PROJECT_NAME} + TS_FILES ${TS_FILES} + SOURCES ${PROJECT_SOURCES} + QM_FILES_OUTPUT_VARIABLE QM_FILES + LUPDATE_OPTIONS -no-obsolete -locations none + ) + else() + qt_add_translation(QM_FILES ${TS_FILES}) + endif() set(TRANSLATIONS_QRC "${CMAKE_BINARY_DIR}/translations.qrc") file(WRITE ${TRANSLATIONS_QRC} "\n \n") foreach(QM_FILE ${QM_FILES}) @@ -53,19 +53,19 @@ if(ENABLE_TRANSLATIONS) list(APPEND PROJECT_SOURCES ${TRANSLATIONS_QRC}) endif() -add_executable(QDiskInfo ${PROJECT_SOURCES}) +add_executable(${PROJECT_NAME} ${PROJECT_SOURCES}) -target_compile_definitions(QDiskInfo PRIVATE - PROJECT_VERSION_MAJOR=${QDiskInfo_VERSION_MAJOR} - PROJECT_VERSION_MINOR=${QDiskInfo_VERSION_MINOR} +target_compile_definitions(${PROJECT_NAME} PRIVATE + PROJECT_VERSION_MAJOR=${${PROJECT_NAME}_VERSION_MAJOR} + PROJECT_VERSION_MINOR=${${PROJECT_NAME}_VERSION_MINOR} ENABLE_TRANSLATIONS=$ INCLUDE_OPTIONAL_RESOURCES=$ CHARACTER_IS_RIGHT=$ ) -target_link_libraries(QDiskInfo PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) +target_link_libraries(${PROJECT_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) -set_target_properties(QDiskInfo PROPERTIES +set_target_properties(${PROJECT_NAME} PROPERTIES ${BUNDLE_ID_OPTION} MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION} MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} @@ -74,18 +74,18 @@ set_target_properties(QDiskInfo PROPERTIES ) include(GNUInstallDirs) -install(TARGETS QDiskInfo +install(TARGETS ${PROJECT_NAME} BUNDLE DESTINATION . LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) -install(FILES "dist/QDiskInfo.desktop" +install(FILES "dist/${PROJECT_NAME}.desktop" DESTINATION "share/applications") -install(FILES "dist/QDiskInfo.svg" +install(FILES "dist/${PROJECT_NAME}.svg" DESTINATION "share/icons/hicolor/scalable/apps") -if(QT_VERSION_MAJOR EQUAL 6) - qt_finalize_executable(QDiskInfo) +if(QT_VERSION_MAJOR GREATER_EQUAL 6) + qt_finalize_executable(${PROJECT_NAME}) endif() include(FeatureSummary) feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)