Open Source Snapmatic and Savegame viewer/editor for GTA V
https://gta5view.syping.de/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
382 lines
10 KiB
382 lines
10 KiB
cmake_minimum_required(VERSION 3.7) |
|
|
|
project(gta5view LANGUAGES C CXX) |
|
|
|
set(CMAKE_INCLUDE_CURRENT_DIR ON) |
|
|
|
set(CMAKE_AUTOUIC ON) |
|
set(CMAKE_AUTOMOC ON) |
|
set(CMAKE_AUTORCC ON) |
|
|
|
set(CMAKE_CXX_STANDARD 11) |
|
set(CMAKE_CXX_STANDARD_REQUIRED ON) |
|
|
|
set(FORCE_QT_VERSION "" CACHE STRING "Force Qt Version") |
|
if(FORCE_QT_VERSION) |
|
set(QT_VERSION_MAJOR ${FORCE_QT_VERSION}) |
|
else() |
|
find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) |
|
endif() |
|
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Network Svg Widgets REQUIRED) |
|
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS LinguistTools QUIET) |
|
|
|
if(WIN32) |
|
list(APPEND GTA5VIEW_LIBS |
|
dwmapi |
|
) |
|
list(APPEND GTA5VIEW_DEFINES |
|
-DUNICODE |
|
-D_UNICODE |
|
-DWIN32 |
|
) |
|
list(APPEND GTA5VIEW_RESOURCES |
|
res/app.rc |
|
) |
|
endif() |
|
if(APPLE) |
|
list(APPEND GTA5VIEW_RESOURCES |
|
res/gta5view.icns |
|
) |
|
set(MACOSX_BUNDLE_BUNDLE_NAME gta5view) |
|
set(MACOSX_BUNDLE_BUNDLE_VERSION 1.10.0) |
|
set(MACOSX_BUNDLE_ICON_FILE gta5view.icns) |
|
set(MACOSX_BUNDLE_GUI_IDENTIFIER de.syping.gta5view) |
|
set_source_files_properties(res/gta5view.icns PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") |
|
endif() |
|
|
|
list(APPEND GTA5VIEW_DEFINES |
|
-DGTA5SYNC_CMAKE |
|
-DGTA5SYNC_PROJECT |
|
) |
|
|
|
set(GTA5VIEW_SOURCES |
|
main.cpp |
|
AboutDialog.cpp |
|
AppEnv.cpp |
|
CrewDatabase.cpp |
|
DatabaseThread.cpp |
|
ExportDialog.cpp |
|
ExportThread.cpp |
|
GlobalString.cpp |
|
IconLoader.cpp |
|
ImportDialog.cpp |
|
JsonEditorDialog.cpp |
|
MapLocationDialog.cpp |
|
OptionsDialog.cpp |
|
PictureDialog.cpp |
|
PictureExport.cpp |
|
PictureWidget.cpp |
|
PlayerListDialog.cpp |
|
ProfileDatabase.cpp |
|
ProfileInterface.cpp |
|
ProfileLoader.cpp |
|
ProfileWidget.cpp |
|
RagePhoto.cpp |
|
SavegameCopy.cpp |
|
SavegameData.cpp |
|
SavegameDialog.cpp |
|
SavegameWidget.cpp |
|
SidebarGenerator.cpp |
|
SnapmaticEditor.cpp |
|
SnapmaticPicture.cpp |
|
SnapmaticWidget.cpp |
|
StandardPaths.cpp |
|
StringParser.cpp |
|
TranslationClass.cpp |
|
UserInterface.cpp |
|
anpro/imagecropper.cpp |
|
pcg/pcg_basic.c |
|
uimod/JSHighlighter.cpp |
|
uimod/UiModLabel.cpp |
|
uimod/UiModWidget.cpp |
|
) |
|
|
|
set(GTA5VIEW_HEADERS |
|
config.h |
|
wrapper.h |
|
AboutDialog.h |
|
AppEnv.h |
|
CrewDatabase.h |
|
DatabaseThread.h |
|
ExportDialog.h |
|
ExportThread.h |
|
GlobalString.h |
|
IconLoader.h |
|
ImportDialog.h |
|
JsonEditorDialog.h |
|
MapLocationDialog.h |
|
OptionsDialog.h |
|
PictureDialog.h |
|
PictureExport.h |
|
PictureWidget.h |
|
PlayerListDialog.h |
|
ProfileDatabase.h |
|
ProfileInterface.h |
|
ProfileLoader.h |
|
ProfileWidget.h |
|
RagePhoto.h |
|
SavegameCopy.h |
|
SavegameData.h |
|
SavegameDialog.h |
|
SavegameWidget.h |
|
SidebarGenerator.h |
|
SnapmaticEditor.h |
|
SnapmaticPicture.h |
|
SnapmaticWidget.h |
|
StandardPaths.h |
|
StringParser.h |
|
TranslationClass.h |
|
UserInterface.h |
|
anpro/imagecropper.h |
|
pcg/pcg_basic.h |
|
uimod/JSHighlighter.h |
|
uimod/UiModLabel.h |
|
uimod/UiModWidget.h |
|
) |
|
|
|
set(GTA5VIEW_INCLUDEDIR |
|
anpro |
|
pcg |
|
uimod |
|
) |
|
|
|
set(GTA5VIEW_FORMS |
|
AboutDialog.ui |
|
ExportDialog.ui |
|
ImportDialog.ui |
|
JsonEditorDialog.ui |
|
MapLocationDialog.ui |
|
OptionsDialog.ui |
|
PictureDialog.ui |
|
PlayerListDialog.ui |
|
ProfileInterface.ui |
|
SavegameDialog.ui |
|
SavegameWidget.ui |
|
SnapmaticEditor.ui |
|
SnapmaticWidget.ui |
|
UserInterface.ui |
|
) |
|
|
|
set(GTA5VIEW_TRANSLATIONS |
|
res/gta5sync_de.ts |
|
res/gta5sync_en_US.ts |
|
res/gta5sync_fr.ts |
|
res/gta5sync_ko.ts |
|
res/gta5sync_ru.ts |
|
res/gta5sync_uk.ts |
|
res/gta5sync_zh_TW.ts |
|
) |
|
|
|
list(APPEND GTA5VIEW_RESOURCES |
|
res/global.qrc |
|
res/template.qrc |
|
) |
|
set_property(SOURCE res/global.qrc PROPERTY AUTORCC_OPTIONS "-threshold;0;-compress;9") |
|
|
|
if(Qt5LinguistTools_FOUND) |
|
qt5_add_translation(GTA5VIEW_QMFILES |
|
${GTA5VIEW_TRANSLATIONS} |
|
res/qt5/qtbase_en_GB.ts |
|
) |
|
set(LINGUIST_FOUND TRUE) |
|
elseif(Qt6LinguistTools_FOUND) |
|
qt6_add_translation(GTA5VIEW_QMFILES |
|
${GTA5VIEW_TRANSLATIONS} |
|
res/qt6/qtbase_en_GB.ts |
|
) |
|
set(LINGUIST_FOUND TRUE) |
|
else() |
|
set(GTA5VIEW_QMFILES |
|
res/gta5sync_de.qm |
|
res/gta5sync_en_US.qm |
|
res/gta5sync_fr.qm |
|
res/gta5sync_ko.qm |
|
res/gta5sync_ru.qm |
|
res/gta5sync_uk.qm |
|
res/gta5sync_zh_TW.qm |
|
res/qt${QT_VERSION_MAJOR}/qtbase_en_GB.qm |
|
) |
|
endif() |
|
|
|
option(QCONF_BUILD "System installation intended Qconf build" OFF) |
|
if(QCONF_BUILD) |
|
list(APPEND GTA5VIEW_DEFINES |
|
-DGTA5SYNC_QCONF |
|
) |
|
else() |
|
list(APPEND GTA5VIEW_RESOURCES |
|
res/img.qrc |
|
res/tr_g5p.qrc |
|
res/qt${QT_VERSION_MAJOR}/tr_qt.qrc |
|
) |
|
endif() |
|
|
|
option(FLATPAK_BUILD "Flatpak modifications and optimisations" OFF) |
|
if(FLATPAK_BUILD) |
|
list(APPEND GTA5VIEW_DEFINES |
|
-DGTA5SYNC_FLATPAK |
|
) |
|
endif() |
|
|
|
option(WITH_DONATE "Donate menu option and donation dialog" OFF) |
|
if(WITH_DONATE) |
|
set(DONATE_ADDRESSES "" CACHE STRING "Donation addresses") |
|
list(APPEND GTA5VIEW_HEADERS |
|
anpro/QrCode.h |
|
) |
|
list(APPEND GTA5VIEW_SOURCES |
|
anpro/QrCode.cpp |
|
) |
|
list(APPEND GTA5VIEW_DEFINES |
|
-DGTA5SYNC_DONATE |
|
) |
|
list(APPEND GTA5VIEW_RESOURCES |
|
res/donate.qrc |
|
) |
|
if(DONATE_ADDRESSES) |
|
list(APPEND GTA5VIEW_DEFINES |
|
"-DGTA5SYNC_DONATE_ADDRESSES=\"${DONATE_ADDRESSES}\"" |
|
) |
|
endif() |
|
endif() |
|
|
|
option(WITH_MOTD "Developer message system directed to users" OFF) |
|
if(WITH_MOTD) |
|
set(MOTD_WEBURL "" CACHE STRING "Messages WebURL") |
|
list(APPEND GTA5VIEW_HEADERS |
|
MessageThread.h |
|
) |
|
list(APPEND GTA5VIEW_SOURCES |
|
MessageThread.cpp |
|
) |
|
list(APPEND GTA5VIEW_DEFINES |
|
-DGTA5SYNC_MOTD |
|
) |
|
if(MOTD_WEBURL) |
|
list(APPEND GTA5VIEW_DEFINES |
|
"-DGTA5SYNC_MOTD_WEBURL=\"${MOTD_WEBURL}\"" |
|
) |
|
endif() |
|
endif() |
|
|
|
option(WITH_TELEMETRY "Hardware survey and basic telemetry system" OFF) |
|
if(WITH_TELEMETRY) |
|
set(TELEMETRY_AUTHID "" CACHE STRING "Telemetry AuthID") |
|
set(TELEMETRY_AUTHPW "" CACHE STRING "Telemetry AuthPW") |
|
set(TELEMETRY_PUSHURL "" CACHE STRING "Telemetry PushURL") |
|
set(TELEMETRY_REGURL "" CACHE STRING "Telemetry RegURL") |
|
set(TELEMETRY_WEBURL "" CACHE STRING "Telemetry WebURL") |
|
list(APPEND GTA5VIEW_HEADERS |
|
TelemetryClass.h |
|
tmext/TelemetryClassAuthenticator.h |
|
) |
|
list(APPEND GTA5VIEW_SOURCES |
|
TelemetryClass.cpp |
|
tmext/TelemetryClassAuthenticator.cpp |
|
) |
|
list(APPEND GTA5VIEW_INCLUDEDIR |
|
tmext |
|
) |
|
list(APPEND GTA5VIEW_DEFINES |
|
-DGTA5SYNC_TELEMETRY |
|
) |
|
if(TELEMETRY_AUTHID AND TELEMETRY_AUTHPW AND TELEMETRY_PUSHURL AND TELEMETRY_REGURL) |
|
list(APPEND GTA5VIEW_DEFINES |
|
"-DGTA5SYNC_TELEMETRY_AUTHID=\"${TELEMETRY_AUTHID}\"" |
|
"-DGTA5SYNC_TELEMETRY_AUTHPW=\"${TELEMETRY_AUTHPW}\"" |
|
"-DGTA5SYNC_TELEMETRY_PUSHURL=\"${TELEMETRY_PUSHURL}\"" |
|
"-DGTA5SYNC_TELEMETRY_REGURL=\"${TELEMETRY_REGURL}\"" |
|
) |
|
endif() |
|
if(TELEMETRY_WEBURL) |
|
list(APPEND GTA5VIEW_DEFINES |
|
"-DGTA5SYNC_TELEMETRY_WEBURL=\"${TELEMETRY_WEBURL}\"" |
|
) |
|
endif() |
|
if(WIN32) |
|
list(APPEND GTA5VIEW_LIBS |
|
d3d9 |
|
) |
|
endif() |
|
endif() |
|
|
|
if(GTA5VIEW_APPVER) |
|
list(APPEND GTA5VIEW_DEFINES |
|
"-DGTA5SYNC_APPVER=\"${GTA5VIEW_APPVER}\"" |
|
) |
|
endif() |
|
if(GTA5VIEW_BUILDCODE) |
|
list(APPEND GTA5VIEW_DEFINES |
|
"-DGTA5SYNC_BUILDCODE=\"${GTA5VIEW_BUILDCODE}\"" |
|
) |
|
endif() |
|
if(GTA5VIEW_BUILDTYPE) |
|
list(APPEND GTA5VIEW_DEFINES |
|
"-DGTA5SYNC_BUILDTYPE=\"${GTA5VIEW_BUILDTYPE}\"" |
|
) |
|
endif() |
|
if(GTA5VIEW_COMMIT) |
|
list(APPEND GTA5VIEW_DEFINES |
|
"-DGTA5SYNC_COMMIT=\"${GTA5VIEW_COMMIT}\"" |
|
) |
|
endif() |
|
|
|
if(GTA5VIEW_INLANG) |
|
list(APPEND GTA5VIEW_DEFINES |
|
"-DGTA5SYNC_INLANG=\"${GTA5VIEW_INLANG}\"" |
|
) |
|
endif() |
|
if(GTA5VIEW_LANG) |
|
list(APPEND GTA5VIEW_DEFINES |
|
"-DGTA5SYNC_LANG=\"${GTA5VIEW_LANG}\"" |
|
) |
|
endif() |
|
if(GTA5VIEW_PLUG) |
|
list(APPEND GTA5VIEW_DEFINES |
|
"-DGTA5SYNC_PLUG=\"${GTA5VIEW_PLUG}\"" |
|
) |
|
endif() |
|
|
|
add_executable(gta5view |
|
WIN32 MACOSX_BUNDLE |
|
${GTA5VIEW_HEADERS} |
|
${GTA5VIEW_SOURCES} |
|
${GTA5VIEW_FORMS} |
|
${GTA5VIEW_RESOURCES} |
|
) |
|
|
|
if(LINGUIST_FOUND AND QCONF_BUILD) |
|
add_custom_target(translations DEPENDS ${GTA5VIEW_QMFILES}) |
|
add_dependencies(gta5view translations) |
|
endif() |
|
|
|
if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.16.0") |
|
target_precompile_headers(gta5view PRIVATE config.h) |
|
endif() |
|
|
|
if(Qt5Core_VERSION VERSION_GREATER_EQUAL "5.14.0") |
|
qt5_import_plugins(gta5view INCLUDE Qt5::QSvgPlugin) |
|
endif() |
|
|
|
target_compile_definitions(gta5view PRIVATE ${GTA5VIEW_DEFINES}) |
|
target_include_directories(gta5view PRIVATE ${GTA5VIEW_INCLUDEDIR}) |
|
target_link_libraries(gta5view PRIVATE Qt${QT_VERSION_MAJOR}::Network Qt${QT_VERSION_MAJOR}::Svg Qt${QT_VERSION_MAJOR}::Widgets ${GTA5VIEW_LIBS}) |
|
|
|
install(TARGETS gta5view DESTINATION bin) |
|
install(FILES res/de.syping.gta5view.desktop DESTINATION share/applications) |
|
install(FILES res/de.syping.gta5view.metainfo.xml DESTINATION share/metainfo) |
|
install(FILES res/de.syping.gta5view.xml DESTINATION share/mime/packages) |
|
install(FILES res/gta5view-16.png DESTINATION share/icons/hicolor/16x16/apps RENAME de.syping.gta5view.png) |
|
install(FILES res/gta5view-24.png DESTINATION share/icons/hicolor/24x24/apps RENAME de.syping.gta5view.png) |
|
install(FILES res/gta5view-32.png DESTINATION share/icons/hicolor/32x32/apps RENAME de.syping.gta5view.png) |
|
install(FILES res/gta5view-48.png DESTINATION share/icons/hicolor/48x48/apps RENAME de.syping.gta5view.png) |
|
install(FILES res/gta5view-64.png DESTINATION share/icons/hicolor/64x64/apps RENAME de.syping.gta5view.png) |
|
install(FILES res/gta5view-96.png DESTINATION share/icons/hicolor/96x96/apps RENAME de.syping.gta5view.png) |
|
install(FILES res/gta5view-128.png DESTINATION share/icons/hicolor/128x128/apps RENAME de.syping.gta5view.png) |
|
install(FILES res/gta5view-256.png DESTINATION share/icons/hicolor/256x256/apps RENAME de.syping.gta5view.png) |
|
install(FILES res/gta5view-512.png DESTINATION share/icons/hicolor/512x512/apps RENAME de.syping.gta5view.png) |
|
if(QCONF_BUILD) |
|
include(res/img.cmake) |
|
install(FILES ${GTA5VIEW_IMGFILES} DESTINATION share/gta5view/resources) |
|
install(FILES ${GTA5VIEW_QMFILES} DESTINATION share/gta5view/translations) |
|
endif()
|
|
|