Warning, /education/gcompris/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 #=============================================================================
0002 # SPDX-FileCopyrightText: 2014 Johnny Jazeix <jazeix@gmail.com>
0003 #
0004 # SPDX-License-Identifier: BSD-3-Clause
0005 #=============================================================================
0006 cmake_minimum_required(VERSION 3.5)
0007 
0008 project(gcompris-qt C CXX)
0009 
0010 # get all the redist dll needed for windows when compiling with vc
0011 set(CMAKE_INSTALL_UCRT_LIBRARIES 1)
0012 include(InstallRequiredSystemLibraries)
0013 
0014 # Set c++11 support
0015 set(CMAKE_CXX_STANDARD 11)
0016 set(CMAKE_CXX_STANDARD_REQUIRED ON)
0017 set(CMAKE_CXX_EXTENSIONS OFF)
0018 
0019 # enable qml debugging for DEBUG builds:
0020 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DQT_QML_DEBUG")
0021 
0022 set(GCOMPRIS_MAJOR_VERSION 2)
0023 set(GCOMPRIS_MINOR_VERSION 4)
0024 set(GCOMPRIS_PATCH_VERSION 0)
0025 
0026 if("${CMAKE_ANDROID_ARCH}" STREQUAL "arm64")
0027   set(GCOMPRIS_PATCH_VERSION 1)
0028 endif()
0029 
0030 # Set the BUILD_DATE
0031 string(TIMESTAMP BUILD_DATE %Y%m)
0032 
0033 # cmake modules setup
0034 find_package(ECM 1.4.0 QUIET NO_MODULE)
0035 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR} ${CMAKE_SOURCE_DIR}/cmake/)
0036 set(CMAKE_PREFIX_PATH "${Qt5_DIR}/")
0037 
0038 # KDE po to qm tools
0039 if(ECM_FOUND)
0040   include(kdeFetchTranslation)
0041   include(ECMAddTests)
0042 
0043   option(BUILD_TESTING "Build and enable unit tests" OFF)
0044   include(ECMCoverageOption)
0045 endif()
0046 
0047 # add tools (cppcheck, clang-tidy...) if build on testing mode only
0048 # (slower compilation)
0049 if(BUILD_TESTING)
0050   include(CodeQualityUtils)
0051 endif()
0052 
0053 set(QT_REQUIRED_VERSION 5.9.0)
0054 
0055 if(CMAKE_SYSTEM_NAME STREQUAL Android)
0056   find_package(ECM)
0057   set(ANDROID 1)
0058   # Require ndk minimum version to 21
0059   if(ANDROID_NDK_REVISION VERSION_LESS "21.0.0")
0060     message(FATAL_ERROR "android ndk 21 minimal required, actually using ${ANDROID_NDK_REVISION}")
0061   endif()
0062   # TODO: possibly should be setup by toolchain one day
0063   set(QT_QMAKE_EXECUTABLE "${_qt5Core_install_prefix}/bin/qmake")
0064   if(ECM_VERSION VERSION_GREATER "5.55.0")
0065     set(QT_REQUIRED_VERSION 5.12.0)
0066   endif()
0067 
0068   # workaround until this fix is in released ECM
0069   if(ECM_VERSION VERSION_LESS "5.15.0")
0070     add_definitions(-DANDROID)
0071   endif()
0072 endif()
0073 
0074 # Set executable filename
0075 if(ANDROID)
0076   set(GCOMPRIS_EXECUTABLE_NAME GCompris)
0077 elseif(SAILFISHOS)
0078   set(GCOMPRIS_EXECUTABLE_NAME harbour-gcompris-qt)
0079 elseif(WIN32)
0080   set(GCOMPRIS_EXECUTABLE_NAME GCompris)
0081 else()
0082   set(GCOMPRIS_EXECUTABLE_NAME gcompris-qt)
0083 endif()
0084 
0085 set(GCOMPRIS_VERSION ${GCOMPRIS_MAJOR_VERSION}.${GCOMPRIS_MINOR_VERSION})
0086 
0087 # An integer value that represents the version of the application
0088 # Increase it at each release
0089 math(EXPR GCOMPRIS_VERSION_CODE "${GCOMPRIS_MAJOR_VERSION}*10000 + ${GCOMPRIS_MINOR_VERSION}*100 + ${GCOMPRIS_PATCH_VERSION}")
0090 
0091 # prevent build in source directory
0092 if("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}")
0093     message(SEND_ERROR "Building in the source directory is not supported.")
0094     message(FATAL_ERROR "Please remove the created \"CMakeCache.txt\" file, the \"CMakeFiles\"
0095             directory and create a build directory and call \"${CMAKE_COMMAND} <path to the sources>\".")
0096 endif()
0097 
0098 find_package(Qt5 ${QT_REQUIRED_VERSION} REQUIRED
0099     Qml Quick Gui Multimedia Core Svg LinguistTools Sensors)
0100 
0101 if(ANDROID)
0102     find_package(Qt5 ${QT_REQUIRED_VERSION} REQUIRED AndroidExtras)
0103 endif()
0104 
0105 if(SAILFISHOS)
0106     find_package(Qt5 ${QT_REQUIRED_VERSION} REQUIRED Widgets)
0107 endif()
0108 
0109 ## For now we workaround CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION to clang with a command variable, so not needed
0110 # if(ANDROID AND ECM_VERSION VERSION_LESS "5.56.0" AND Qt5Core_VERSION VERSION_GREATER "5.11.99")
0111 #   message(FATAL_ERROR "ECM ${ECM_VERSION} not compatible with Qt ${Qt5Core_VERSION} version for android.")
0112 # endif()
0113 
0114 if((UNIX AND NOT APPLE AND NOT SAILFISHOS AND NOT ANDROID) OR WIN32)
0115     find_package(OpenSSL REQUIRED)
0116 endif()
0117 
0118 find_package(KF5 QUIET COMPONENTS
0119     DocTools
0120 )
0121 if(ECM_FOUND)
0122     include(KDEInstallDirs)
0123 
0124     if(ECM_VERSION VERSION_GREATER "1.6.0")
0125         add_subdirectory(images)
0126         install(FILES org.kde.gcompris.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR})
0127         install(FILES org.kde.gcompris.desktop DESTINATION ${KDE_INSTALL_APPDIR})
0128     else()
0129         message(STATUS "ECM_VERSION is ${ECM_VERSION}, icons and desktop files won't be installed.")
0130     endif()
0131 endif()
0132 
0133 # Tell CMake to run moc when necessary:
0134 set(CMAKE_AUTOMOC ON)
0135 
0136 # As moc files are generated in the binary dir, tell CMake
0137 # to always look for includes there:
0138 set(CMAKE_INCLUDE_CURRENT_DIR ON)
0139 
0140 #get_cmake_property(_variableNames VARIABLES)
0141 #foreach (_variableName ${_variableNames})
0142 #    message("${_variableName}=${${_variableName}}")
0143 #endforeach()
0144 
0145 option(WITH_DOWNLOAD "Internal download" ON)
0146 # @FIXME These permissions should be removed if download is disable
0147 #        but it makes the application crash on exit (tested on Android 6)
0148 set(ANDROID_INTERNET_PERMISSION "<uses-permission android:name=\"android.permission.INTERNET\" />")
0149 set(ANDROID_ACCESS_NETWORK_STATE_PERMISSION "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" />")
0150 
0151 set(GRAPHICAL_RENDERER "auto" CACHE STRING "Policy for choosing the renderer backend [opengl|software|auto]")
0152 
0153 # Set output directory
0154 if(CMAKE_HOST_APPLE)
0155   set(_bundle_bin gcompris-qt.app/Contents/MacOS)
0156   set(_data_dest_dir bin/${_bundle_bin}/../Resources)
0157 else()
0158   set(_data_dest_dir share/${GCOMPRIS_EXECUTABLE_NAME})
0159 endif()
0160 if(ANDROID)
0161   # Android .so output
0162   set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/android/libs/${ANDROID_ABI}/)
0163   set(GCOMPRIS_TRANSLATIONS_DIR ${CMAKE_BINARY_DIR}/${_data_dest_dir} CACHE INTERNAL "" FORCE)
0164   set(GCOMPRIS_RCC_DIR ${CMAKE_BINARY_DIR}/android/assets/${_data_dest_dir}/rcc CACHE INTERNAL "" FORCE)
0165   set(ANDROID_PACKAGE "net.gcompris.full")
0166   add_subdirectory(android)
0167 elseif(CMAKE_HOST_APPLE)
0168   # MacOSX build
0169   set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
0170   set(GCOMPRIS_TRANSLATIONS_DIR ${CMAKE_BINARY_DIR}/${_data_dest_dir}/translations CACHE INTERNAL "" FORCE)
0171   set(GCOMPRIS_RCC_DIR ${CMAKE_BINARY_DIR}/${_data_dest_dir}/rcc CACHE INTERNAL "" FORCE)
0172 else()
0173   # Desktop build
0174   set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
0175   set(GCOMPRIS_TRANSLATIONS_DIR ${CMAKE_BINARY_DIR}/${_data_dest_dir}/translations CACHE INTERNAL "" FORCE)
0176   set(GCOMPRIS_RCC_DIR ${CMAKE_BINARY_DIR}/${_data_dest_dir}/rcc CACHE INTERNAL "" FORCE)
0177 endif()
0178 
0179 # Always create these folders
0180 add_custom_command(
0181   OUTPUT shareFolders
0182   COMMAND cmake -E make_directory ${GCOMPRIS_TRANSLATIONS_DIR}
0183   COMMAND cmake -E make_directory ${GCOMPRIS_RCC_DIR}
0184   )
0185 add_custom_target(
0186   createShareFolders ALL
0187   DEPENDS shareFolders
0188   )
0189 
0190 include(cmake/rcc.cmake)
0191 
0192 # Translations handling
0193 
0194 # Simple command calling the python script
0195   add_custom_command(
0196     OUTPUT retrievePoFilesFromSvn
0197     COMMAND python3 tools/l10n-fetch-po-files.py
0198     WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
0199     )
0200 # Install translations
0201 add_custom_target(getSvnTranslations
0202   DEPENDS retrievePoFilesFromSvn
0203   COMMENT "Re-run cmake after this to be able to run BuildTranslations with the latest files"
0204   )
0205 
0206 # Get all supported locales by GCompris from LanguageList.qml file, excluded the commented ones
0207 file(STRINGS "${CMAKE_SOURCE_DIR}/src/core/LanguageList.qml" handledGComprisLocaleList ENCODING UTF-8 REGEX "[^//]{.*UTF-8")
0208 foreach(localeLine ${handledGComprisLocaleList})
0209   # We match the pattern locale.UTF-8
0210   string(REGEX MATCH ".*\"([a-zA-Z_@]*)\.UTF-8.*" _ ${localeLine})
0211   set(localeFull ${CMAKE_MATCH_1})
0212   list(APPEND gcomprisLocales ${localeFull})
0213   # Add simplified locale
0214   string(REGEX MATCH "([a-zA-Z@]*)_.*" _ ${localeFull})
0215   set(localeShort ${CMAKE_MATCH_1})
0216   list(APPEND gcomprisLocales ${localeShort})
0217 endforeach()
0218 # Remove all duplicated shortened locales
0219 list(REMOVE_DUPLICATES gcomprisLocales)
0220 
0221 # Get all po files in po/. You can get them doing: python3 tools/l10n-fetch-po-files.py
0222 file(GLOB TRANSLATIONS_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "po/*/gcompris_qt.po")
0223 foreach(PoSource ${TRANSLATIONS_FILES})
0224   # Get the locale
0225   string(REGEX MATCH "po/([a-zA-Z@_]*)/gcompris_qt.po" _ ${PoSource})
0226   set(locale ${CMAKE_MATCH_1})
0227 
0228   # search in src/core/LanguageList the line corresponding to the locale. If exists, then add the custom_command
0229   if(NOT ${locale} IN_LIST gcomprisLocales)
0230     message(STATUS "Locale ${locale} not supported by GCompris")
0231     continue()
0232   endif()
0233   message(STATUS "Locale ${locale} is supported by GCompris")
0234 
0235   # Changes the .po extension to .ts
0236   string(REPLACE ".po" ".ts" TsSource ${PoSource})
0237   # Replace qt in gcompris_qt.po with the locale
0238   string(REPLACE "qt" "${locale}" TsSource ${TsSource})
0239   # Removes the po/${locale} folder prefix
0240   string(REPLACE "po/${locale}/" "" TsSource ${TsSource})
0241   # qm extension filename
0242   string(REPLACE ".ts" ".qm" QmOutput ${TsSource})
0243 
0244   set(OutTsFile ${CMAKE_BINARY_DIR}/tmp/${TsSource})
0245 
0246   add_custom_command(
0247     OUTPUT ${QmOutput}
0248     COMMAND cmake -E make_directory ${GCOMPRIS_TRANSLATIONS_DIR}
0249     COMMAND cmake -E make_directory ${CMAKE_BINARY_DIR}/tmp
0250     # Remove the obsolete translations and set po in the ts output file
0251     COMMAND msgattrib --no-obsolete  ${CMAKE_CURRENT_SOURCE_DIR}/${PoSource} -o ${OutTsFile}
0252     # Convert the po into ts
0253     COMMAND Qt5::lconvert -if po -of ts -i ${OutTsFile} -o ${OutTsFile}
0254     # Convert the ts in qm removing non finished translations
0255     COMMAND Qt5::lrelease -compress -nounfinished ${OutTsFile} -qm ${GCOMPRIS_TRANSLATIONS_DIR}/${QmOutput}
0256     )
0257   list(APPEND QM_FILES ${QmOutput})
0258 endforeach()
0259 
0260 # Install translations
0261 if(WIN32)
0262     add_custom_target(BuildTranslations
0263         DEPENDS ${QM_FILES}
0264         COMMENT "If you don't have the .po, you need to run make getSvnTranslations first then re-run cmake"
0265     )
0266 else()
0267     add_custom_target(BuildTranslations ALL
0268         DEPENDS ${QM_FILES}
0269         COMMENT "If you don't have the .po, you need to run make getSvnTranslations first then re-run cmake"
0270     )
0271 endif()
0272 
0273 add_custom_command(
0274     OUTPUT doBundleTranslations
0275     COMMAND 7z a -w${CMAKE_BINARY_DIR}/share/${GCOMPRIS_EXECUTABLE_NAME}
0276                ${CMAKE_BINARY_DIR}/translations-${GCOMPRIS_VERSION}.7z
0277                ${CMAKE_BINARY_DIR}/share/${GCOMPRIS_EXECUTABLE_NAME}/translations
0278     WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
0279     )
0280 # Bundle translations
0281 add_custom_target(BundleTranslations
0282   DEPENDS doBundleTranslations
0283   COMMENT "If you want to provide a zip of the translations on a server (run make BuildTranslations first)"
0284   )
0285 
0286 add_custom_command(
0287     OUTPUT doDlAndInstallBundledTranslations
0288     COMMAND curl -fsS -o translations-${GCOMPRIS_VERSION}.7z
0289                https://gcompris.net/download/translations-${GCOMPRIS_VERSION}.7z
0290     COMMAND 7z x -y -o${CMAKE_BINARY_DIR}/share/${GCOMPRIS_EXECUTABLE_NAME}
0291                translations-${GCOMPRIS_VERSION}.7z
0292     WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
0293     )
0294 # Download and install bundled translations
0295 add_custom_target(DlAndInstallBundledTranslations
0296   DEPENDS doDlAndInstallBundledTranslations
0297   COMMENT "Download the bundled translation and install them in the build dir"
0298   )
0299 
0300 if(CMAKE_HOST_APPLE)
0301   install(DIRECTORY ${GCOMPRIS_TRANSLATIONS_DIR} DESTINATION ${_bundle_bin})
0302 elseif(ANDROID)
0303   install(DIRECTORY ${GCOMPRIS_TRANSLATIONS_DIR} DESTINATION "share")
0304 else()
0305   install(DIRECTORY ${GCOMPRIS_TRANSLATIONS_DIR} DESTINATION ${_data_dest_dir})
0306 endif()
0307 
0308 # Build standalone package option -> if ON, we will copy the required Qt files in the build package.
0309 # If OFF, "make install" will not copy Qt files so only GCompris files will be packaged.
0310 # By default, it is true on Windows (as we deliver NSIS package), macOS (bundled), android (apk) and false on linux (to do make install)
0311 # If you want to create a STGZ package for linux (auto-extractible), override this variable by typing : cmake -DBUILD_STANDALONE=ON
0312 if(UNIX AND NOT ANDROID AND NOT APPLE)
0313   option(BUILD_STANDALONE "Build a standalone package when typing 'make package'" OFF)
0314 else()
0315   option(BUILD_STANDALONE "Build a standalone package when typing 'make package'" ON)
0316 endif()
0317 
0318 option(WITH_KIOSK_MODE "Set the kiosk mode by default" OFF)
0319 
0320 if(WIN32)
0321   set(COMPRESSED_AUDIO "mp3" CACHE STRING "Compressed Audio format [ogg|aac|mp3]")
0322 elseif(APPLE)
0323   set(COMPRESSED_AUDIO "aac" CACHE STRING "Compressed Audio format [ogg|aac|mp3]")
0324 else()
0325   set(COMPRESSED_AUDIO "ogg" CACHE STRING "Compressed Audio format [ogg|aac|mp3]")
0326 endif()
0327 
0328 file(GLOB_RECURSE OGG_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/ "*.ogg")
0329 
0330 foreach(OGG_FILE ${OGG_FILES})
0331   # This should only replace the extension
0332   string(REGEX REPLACE "ogg$" "aac" AAC_FILE ${OGG_FILE})
0333   add_custom_command(
0334     OUTPUT ${AAC_FILE}
0335     # Put the good line depending on your installation
0336     COMMAND avconv -v warning -i ${OGG_FILE} -acodec libvo_aacenc ${AAC_FILE}
0337     #COMMAND ffmpeg -v warning -i ${OGG_FILE} -acodec aac -strict -2 ${AAC_FILE}
0338     )
0339   list(APPEND AAC_FILES ${AAC_FILE})
0340 
0341   # This should only replace the extension
0342   string(REGEX REPLACE "ogg$" "mp3" MP3_FILE ${OGG_FILE})
0343   add_custom_command(
0344     OUTPUT ${MP3_FILE}
0345     # Put the good line depending on your installation
0346     #COMMAND avconv -v warning -i ${OGG_FILE} -acodec mp3 ${MP3_FILE}
0347     COMMAND ffmpeg -v warning -i ${OGG_FILE} -acodec mp3 -strict -2 ${MP3_FILE}
0348     )
0349   list(APPEND MP3_FILES ${MP3_FILE})
0350 endforeach()
0351 
0352 add_custom_target(
0353   createAacFromOgg
0354   DEPENDS ${AAC_FILES}
0355   )
0356 
0357 add_custom_target(
0358   createMp3FromOgg
0359   DEPENDS ${MP3_FILES}
0360   )
0361 
0362 if(ANDROID)
0363   set(GCOMPRIS_ASSETS_DIR ${GCOMPRIS_RCC_DIR}/../../../ CACHE INTERNAL "" FORCE)
0364 else()
0365   set(GCOMPRIS_ASSETS_DIR ${GCOMPRIS_RCC_DIR} CACHE INTERNAL "" FORCE)
0366 endif()
0367 
0368 # predownload assets (voices and images) and install them in the rcc folder
0369 set(DOWNLOAD_ASSETS "" CACHE STRING "Download and packages images and voices. use a list like: words,en,fr,pt_BR,music to retrieve multiple files")
0370 add_custom_command(
0371     OUTPUT predownloadAssets
0372     COMMAND python3 tools/download-assets.py ${DOWNLOAD_ASSETS} ${COMPRESSED_AUDIO} ${GCOMPRIS_ASSETS_DIR}
0373     WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
0374     )
0375 
0376 add_custom_command(
0377     OUTPUT assetsFolders
0378     COMMAND cmake -E make_directory "${GCOMPRIS_ASSETS_DIR}/data2"
0379     COMMAND cmake -E make_directory "${GCOMPRIS_ASSETS_DIR}/data2/voices-${COMPRESSED_AUDIO}"
0380     COMMAND cmake -E make_directory "${GCOMPRIS_ASSETS_DIR}/data2/words"
0381     COMMAND cmake -E make_directory "${GCOMPRIS_ASSETS_DIR}/data2/backgroundMusic"
0382     )
0383 # Install assets
0384 add_custom_target(getAssets
0385   DEPENDS assetsFolders predownloadAssets
0386   )
0387 
0388 add_custom_command(
0389     OUTPUT doBundleConvertedOggs
0390     COMMAND 7z a converted_ogg_to_${COMPRESSED_AUDIO}-${GCOMPRIS_VERSION}.7z '-ir!src/*${COMPRESSED_AUDIO}'
0391     WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
0392     )
0393 # Bundle oggs ready to be uploaded on a server. This ease build on system without the appropriate audio
0394 # convertion tools.
0395 add_custom_target(BundleConvertedOggs
0396   DEPENDS doBundleConvertedOggs
0397   COMMENT "Bundle the converted oggs to upload them on a server. First set COMPRESSED_AUDIO appropriately."
0398   )
0399 
0400 add_custom_command(
0401     OUTPUT doDlAndInstallBundledConvertedOggs
0402     COMMAND curl -fsS -o converted_ogg_to_${COMPRESSED_AUDIO}-${GCOMPRIS_VERSION}.7z
0403             https://gcompris.net/download/converted_ogg_to_${COMPRESSED_AUDIO}-${GCOMPRIS_VERSION}.7z
0404     COMMAND 7z x -y converted_ogg_to_${COMPRESSED_AUDIO}-${GCOMPRIS_VERSION}.7z
0405     WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
0406     )
0407 # Download and install bundled converted oggs
0408 add_custom_target(DlAndInstallBundledConvertedOggs
0409   DEPENDS doDlAndInstallBundledConvertedOggs
0410   COMMENT "Download the bundled converted oggs and install them in the source dir"
0411   )
0412 
0413 if(${GCOMPRIS_PATCH_VERSION} STREQUAL 0)
0414   set(ARCHIVE_NAME ${CMAKE_PROJECT_NAME}-${GCOMPRIS_VERSION})
0415 else()
0416   set(ARCHIVE_NAME ${CMAKE_PROJECT_NAME}-${GCOMPRIS_VERSION}.${GCOMPRIS_PATCH_VERSION})
0417 endif()
0418 
0419 add_custom_target(dist
0420     COMMAND git archive --prefix=${ARCHIVE_NAME}/ HEAD
0421         | xz > ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.xz
0422     WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
0423 
0424 if(KF5_FOUND)
0425     add_subdirectory(docs/docbook)
0426 endif()
0427 
0428 # qml-box2d
0429 include(cmake/box2d.cmake)
0430 
0431 add_subdirectory(src)
0432 
0433 if(SAILFISHOS)
0434   # Need to be done at the end, after src
0435   add_subdirectory(platforms/sailfishOS)
0436 endif()
0437 
0438 if (UBUNTU_TOUCH)
0439     add_subdirectory(platforms/ubuntutouch)
0440 endif ()
0441 
0442 # only enable unit tests for linux
0443 if(BUILD_TESTING)
0444   enable_testing()
0445   add_subdirectory(tests)
0446 endif()
0447 
0448 add_custom_target(binaries)
0449 add_dependencies(binaries ${GCOMPRIS_EXECUTABLE_NAME} rcc_core rcc_menu rcc_activities all_activities)