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
This commit is contained in:
edisionnano
2025-02-02 22:06:49 +02:00
committed by GitHub
parent 9d380c8cfa
commit a367aba34a

View File

@@ -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} "<RCC>\n <qresource prefix=\"/translations\">\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=$<BOOL:${ENABLE_TRANSLATIONS}>
INCLUDE_OPTIONAL_RESOURCES=$<BOOL:${INCLUDE_OPTIONAL_RESOURCES}>
CHARACTER_IS_RIGHT=$<BOOL:${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)