Start with basic template for kirigami app using cmake.

This commit is contained in:
2019-11-04 12:23:44 -05:00
parent 11abef8497
commit 41c605ae2a
10 changed files with 136 additions and 5 deletions

9
.gitmodules vendored Normal file
View File

@@ -0,0 +1,9 @@
[submodule "3rdparty/kirigami"]
path = 3rdparty/kirigami
url = git://anongit.kde.org/kirigami.git
[submodule "3rdparty/breeze-icons"]
path = 3rdparty/breeze-icons
url = git://anongit.kde.org/breeze-icons.git
[submodule "3rdparty/extra-cmake-modules"]
path = 3rdparty/extra-cmake-modules
url = git://anongit.kde.org/extra-cmake-modules.git

3
3rdparty/CMakeLists.txt vendored Normal file
View File

@@ -0,0 +1,3 @@
set(BUILD_SHARED_LIBS 0)
add_subdirectory(kirigami)

1
3rdparty/breeze-icons vendored Submodule

Submodule 3rdparty/breeze-icons added at 4a9d61afe2

39
3rdparty/ecm/ECMConfig.cmake vendored Normal file
View File

@@ -0,0 +1,39 @@
####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() #######
####### Any changes to this file will be overwritten by the next CMake run ####
####### The input file was ECMConfig.cmake.in ########
get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../" ABSOLUTE)
macro(set_and_check _var _file)
set(${_var} "${_file}")
if(NOT EXISTS "${_file}")
message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !")
endif()
endmacro()
macro(check_required_components _NAME)
foreach(comp ${${_NAME}_FIND_COMPONENTS})
if(NOT ${_NAME}_${comp}_FOUND)
if(${_NAME}_FIND_REQUIRED_${comp})
set(${_NAME}_FOUND FALSE)
endif()
endif()
endforeach()
endmacro()
####################################################################################
set(ECM_FIND_MODULE_DIR "${PACKAGE_PREFIX_DIR}/extra-cmake-modules/find-modules/")
set(ECM_MODULE_DIR "${PACKAGE_PREFIX_DIR}/extra-cmake-modules/modules/")
set(ECM_KDE_MODULE_DIR "${PACKAGE_PREFIX_DIR}/extra-cmake-modules/kde-modules/")
set(ECM_PREFIX "${PACKAGE_PREFIX_DIR}")
set(ECM_MODULE_PATH "${ECM_MODULE_DIR}" "${ECM_FIND_MODULE_DIR}" "${ECM_KDE_MODULE_DIR}")
set(ECM_GLOBAL_FIND_VERSION "${ECM_FIND_VERSION}")
include("${ECM_MODULE_DIR}/ECMUseFindModules.cmake")

31
3rdparty/ecm/ECMConfigVersion.cmake vendored Normal file
View File

@@ -0,0 +1,31 @@
# This is a basic version file for the Config-mode of find_package().
# It is used by write_basic_package_version_file() as input file for configure_file()
# to create a version-file which can be installed along a config.cmake file.
#
# The created file sets PACKAGE_VERSION_EXACT if the current version string and
# the requested version string are exactly the same and it sets
# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version.
# The variable CVF_VERSION must be set before calling configure_file().
set(PACKAGE_VERSION "5.63.0")
if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
set(PACKAGE_VERSION_COMPATIBLE FALSE)
else()
set(PACKAGE_VERSION_COMPATIBLE TRUE)
if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
set(PACKAGE_VERSION_EXACT TRUE)
endif()
endif()
# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "" STREQUAL "")
return()
endif()
# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "")
math(EXPR installedBits " * 8")
set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
set(PACKAGE_VERSION_UNSUITABLE TRUE)
endif()

1
3rdparty/extra-cmake-modules vendored Submodule

1
3rdparty/kirigami vendored Submodule

Submodule 3rdparty/kirigami added at 307ab1db97

View File

@@ -1,7 +1,24 @@
cmake_minimum_required(VERSION 3.0)
cmake_minimum_required(VERSION 3.2)
find_package(Qt5 REQUIRED COMPONENTS Gui Qml)
if (POLICY CMP0063)
cmake_policy(SET CMP0063 NEW)
endif()
set(ECM_DIR ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/ecm)
find_package(ECM REQUIRED CONFIG)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/ ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH})
set(BREEZEICONS_DIR ${CMAKE_SOURCE_DIR}/3rdparty/breeze-icons/)
find_package(Qt5 5.12 REQUIRED Core Quick Multimedia Test Widgets QuickControls2)
include(KDEInstallDirs)
include(KDECompilerSettings)
include(KDECMakeSettings)
set(CMAKE_AUTOMOC ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_EXTENSIONS OFF)
add_subdirectory(3rdparty)
add_subdirectory(src)

View File

@@ -1,4 +1,18 @@
qt5_add_resources(qiflora_SRCS resources.qrc)
add_executable(qiflora main.cpp ${qiflora_SRCS})
target_link_libraries(qiflora Qt5::Qml Qt5::Gui)
include_directories(${CMAKE_SOURCE_DIR}/3rdparty/kirigami/src)
include(${CMAKE_SOURCE_DIR}/3rdparty/kirigami/KF5Kirigami2Macros.cmake)
qt5_add_resources(qiflora_SRCS kirigami-icons.qrc resources.qrc)
if (CMAKE_SYSTEM_NAME STREQUAL "Android")
set(qiflora_EXTRA_LIBS Qt5::AndroidExtras
#FIXME: we shouldn't have to link to it but otherwise the lib won't be packaged on Android
Qt5::QuickControls2)
else ()
#qstyle-based qqc2 style needs a QApplication
set(qiflora_EXTRA_LIBS Qt5::Widgets)
endif()
add_executable(qiflora main.cpp ${qiflora_SRCS})
target_link_libraries(qiflora kirigamiplugin Qt5::Core Qt5::Qml Qt5::Quick Qt5::QuickControls2 ${qiflora_EXTRA_LIBS})
kirigami_package_breeze_icons(ICONS application-menu document-decrypt folder-sync go-next go-previous go-up handle-left handle-right view-list-icons applications-graphics media-record-symbolic)

15
src/kirigami-icons.qrc Normal file
View File

@@ -0,0 +1,15 @@
<RCC>
<qresource prefix="/org/kde/kirigami/">
<file alias="icons/application-menu.svg">../3rdparty/breeze-icons/icons/actions/32/application-menu.svg</file>
<file alias="icons/document-decrypt.svg">../3rdparty/breeze-icons/icons/actions/32/document-decrypt.svg</file>
<file alias="icons/folder-sync.svg">../3rdparty/breeze-icons/icons/actions/32/folder-sync.svg</file>
<file alias="icons/go-next.svg">../3rdparty/breeze-icons/icons/actions/22/go-next.svg</file>
<file alias="icons/go-previous.svg">../3rdparty/breeze-icons/icons/actions/22/go-previous.svg</file>
<file alias="icons/go-up.svg">../3rdparty/breeze-icons/icons/actions/22/go-up.svg</file>
<file alias="icons/handle-left.svg">../3rdparty/breeze-icons/icons/actions/22/handle-left.svg</file>
<file alias="icons/handle-right.svg">../3rdparty/breeze-icons/icons/actions/22/handle-right.svg</file>
<file alias="icons/view-list-icons.svg">../3rdparty/breeze-icons/icons/actions/32/view-list-icons.svg</file>
<file alias="icons/applications-graphics.svg">../3rdparty/breeze-icons/icons/categories/32/applications-graphics.svg</file>
<file alias="icons/media-record-symbolic.svg">../3rdparty/breeze-icons/icons/actions/symbolic/media-record-symbolic.svg</file>
</qresource>
</RCC>