@@ -20,49 +20,87 @@ project(Projecteur LANGUAGES CXX)
2020
2121list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR} /cmake/modules" )
2222include (GitVersion)
23+ include (Translation)
2324
2425set (CMAKE_CXX_STANDARD 14)
2526set (CMAKE_CXX_STANDARD_REQUIRED ON )
2627
2728set (CMAKE_AUTOMOC ON )
2829set (CMAKE_AUTORCC ON )
29- find_package (Qt5 COMPONENTS Core Gui Quick Widgets REQUIRED)
30+ find_package (Qt5 5.7 COMPONENTS Core Gui Quick Widgets REQUIRED)
31+ find_package (Qt5 QUIET COMPONENTS X11Extras)
32+ set (HAS_Qt5_X11Extras ${Qt5_FOUND} )
33+
34+ # Qt 5.8 seems to have issues with the way Projecteur shows the full screen overlay window,
35+ # let's warn the user about it.
36+ if (Qt5_VERSION VERSION_EQUAL "5.8"
37+ OR (Qt5_VERSION VERSION_GREATER "5.8" AND Qt5_VERSION VERSION_LESS "5.9" ))
38+ message (WARNING "There are known issues when using Projecteur with Qt Version 5.8, "
39+ "please use a different Qt Version." )
40+ endif ()
3041
3142add_executable (projecteur
32- main.cc
33- aboutdlg.cc aboutdlg.h
34- colorselector.cc colorselector.h
35- preferencesdlg.cc preferencesdlg.h
36- projecteurapp.cc projecteurapp.h
37- runguard.cc runguard.h
38- settings.cc settings.h
39- spotlight.cc spotlight.h
40- spotshapes.cc spotshapes.h
41- resources.qrc qml/qml.qrc)
43+ src/main.cc
44+ src/aboutdlg.cc src/aboutdlg.h
45+ src/colorselector.cc src/colorselector.h
46+ src/imageitem.cc src/imageitem.h
47+ src/preferencesdlg.cc src/preferencesdlg.h
48+ src/projecteurapp.cc src/projecteurapp.h
49+ src/runguard.cc src/runguard.h
50+ src/settings.cc src/settings.h
51+ src/spotlight.cc src/spotlight.h
52+ src/spotshapes.cc src/spotshapes.h
53+ resources.qrc qml/qml.qrc)
4254
4355target_link_libraries (projecteur
44- Qt5::Core Qt5::Quick Qt5::Widgets
56+ PRIVATE Qt5::Core Qt5::Quick Qt5::Widgets
57+ )
58+
59+ if (HAS_Qt5_X11Extras)
60+ target_link_libraries (projecteur PRIVATE Qt5::X11Extras)
61+ target_compile_definitions (projecteur PRIVATE HAS_Qt5_X11Extras=1)
62+ endif ()
63+
64+ target_compile_options (projecteur
65+ PRIVATE
66+ $<$<OR :$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:Clang>>:-Wall -Wextra>
4567)
4668
69+ target_compile_definitions (projecteur PRIVATE
70+ CXX_COMPILER_ID=${CMAKE_CXX_COMPILER_ID} CXX_COMPILER_VERSION=${CMAKE_CXX_COMPILER_VERSION} )
71+
4772# Set version project properties for builds not from a git repository (e.g. created with git archive)
4873# If creating the version number via git information fails, the following target properties
4974# will be used. IMPORTANT - when creating a release tag with git flow:
5075# Update this information - the version numbers and the version type.
5176# VERSION_TYPE must be either 'release' or 'develop'
5277set_target_properties (projecteur PROPERTIES
5378 VERSION_MAJOR 0
54- VERSION_MINOR 5
79+ VERSION_MINOR 6
5580 VERSION_PATCH 0
5681 VERSION_TYPE release
5782)
5883add_version_info(projecteur "${CMAKE_CURRENT_SOURCE_DIR} " )
5984
85+ # Create files containing generated version strings, helping package maintainers
86+ get_target_property (PROJECTEUR_VERSION_STRING projecteur VERSION_STRING)
87+ # Arch Linux = PKGBUILD/makepkg: '-' is not allowed in version number
88+ string (REPLACE "-" "" PROJECTEUR_VERSION_STRING_ARCHLINUX "${PROJECTEUR_VERSION_STRING} " )
89+ file (WRITE "${CMAKE_CURRENT_BINARY_DIR} /version-string" "${PROJECTEUR_VERSION_STRING} " )
90+ file (WRITE "${CMAKE_CURRENT_BINARY_DIR} /version-string.archlinux" "${PROJECTEUR_VERSION_STRING_ARCHLINUX} " )
91+
92+ # Translation
93+ list (APPEND languages de fr es)
94+ set (ts_directories "${CMAKE_CURRENT_SOURCE_DIR} /i18n" )
95+ add_translations_target("projecteur" "${CMAKE_CURRENT_BINARY_DIR} " "${ts_directories} " "${languages} " )
96+ add_translation_update_task("projecteur" "${CMAKE_CURRENT_SOURCE_DIR} " "${CMAKE_CURRENT_SOURCE_DIR} /i18n" "${languages} " )
97+
6098# Add target with non-source files for convenience when using IDEs like QtCreator and others
6199add_custom_target (non-sources SOURCES README.md LICENSE.md )
62100
63101# Install
64102install (TARGETS projecteur DESTINATION bin)
65- set (PROJECTEUR_INSTALL_PATH "${CMAKE_INSTALL_PREFIX} /bin/projecteur" )
103+ set (PROJECTEUR_INSTALL_PATH "${CMAKE_INSTALL_PREFIX} /bin/projecteur" ) #used in desktop file template
66104
67105# Use udev.pc pkg-config file to set the dir path
68106if (NOT CMAKE_INSTALL_UDEVRULESDIR)
@@ -86,7 +124,6 @@ set (CMAKE_INSTALL_UDEVRULESDIR ${UDEVDIR}/rules.d CACHE PATH "Where to install
86124mark_as_advanced (CMAKE_INSTALL_UDEVRULESDIR)
87125
88126# Configure and install files
89- set (DEVICE_USER_GROUP spotlight-device)
90127set (OUTDIR "${CMAKE_CURRENT_BINARY_DIR} " )
91128set (TMPLDIR "${CMAKE_CURRENT_SOURCE_DIR} /cmake/templates" )
92129
@@ -106,8 +143,13 @@ configure_file("${TMPLDIR}/postinst.in" "pkg/scripts/postinst" @ONLY)
106143
107144set (HOMEPAGE "https://github.com/jahnf/Projecteur" )
108145
109- # Add 'dist-package' target: Creates a deb/rpm/tgz package depending on the current Linux distribution
146+ # --- Linux packaging ---
110147include (LinuxPackaging)
148+
149+ # Add 'source-archive' target
150+ add_source_archive_target(projecteur)
151+
152+ # Add 'dist-package' target: Creates a deb/rpm/tgz package depending on the current Linux distribution
111153add_dist_package_target(
112154 PROJECT "${CMAKE_PROJECT_NAME} "
113155 TARGET projecteur
@@ -120,6 +162,3 @@ add_dist_package_target(
120162 POSTINST_SCRIPT "${OUTDIR} /pkg/scripts/postinst"
121163)
122164
123- # Add 'source-archive' target
124- add_source_archive_target(projecteur)
125-
0 commit comments