Initial minimal project.

This commit is contained in:
Rasim Labibov
2017-10-18 14:47:07 +03:00
parent 624ef51102
commit 52edfb0e6b
8 changed files with 153 additions and 0 deletions
+14
View File
@@ -0,0 +1,14 @@
cmake_minimum_required(VERSION 2.8)
# Common project properties
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILT_TYPE Debug CACHE STRING "Choose the type of build, options are: Debug Release" FORCE)
endif()
# 3rd party tools
find_package(Qt5 COMPONENTS Widgets Qml Quick REQUIRED)
# Directory with the source code
add_subdirectory(src)
+46
View File
@@ -0,0 +1,46 @@
# Minimal Qt QML Project
This is minimal program that uses Qt Qml for creating user interface library
and using CMake as build system.
## Built With
* [CMake](http://cmake.org/) - Build system (>=5.7 is required).
* [Qt](http://www.qt.io/) - Cross-platform library (>=2.8 is required).
## Getting Started
Install the following packages to prepare the build.
### Ubuntu & Debian
* Ubuntu 16.04
* Debian 9
```
sudo apt-get install -y build-essential cmake qtbase5-dev qtdeclarative5-dev qml-module-qtquick2 qtquickcontrols2-5-dev qml-module-qtquick-controls
```
### Fedora & CentOS
* CentOS 7
* Fedora >=20
```
sudo yum groupinstall -y "Development Tools"
sudo yum install -y cmake qt5-qtbase-devel qt5-qtdeclarative-devel qt5-qtquickcontrols qt5-qtquickcontrols2-devel
```
### Build Solution
Call the build of the solution and launch the application:
```
cd <PathToProject>
mkdir build
cd build
cmake ..
make
./src/MinimalQml &
```
+43
View File
@@ -0,0 +1,43 @@
include_directories(${Qt5Widgets_INCLUDE_DIRS} ${QtQml_INCLUDE_DIRS})
add_definitions(${Qt5Widgets_DEFINITIONS} ${QtQml_DEFINITIONS} ${${Qt5Quick_DEFINITIONS}})
qt5_add_resources(QT_RESOURCES qml.qrc)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
if(CMAKE_BUILD_TYPE MATCHES Debug)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG")
endif()
set(PROJECT "MinimalQml")
project(${PROJECT})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -std=c++11 -fstrict-aliasing -pedantic-errors -pedantic -Wno-deprecated-declarations -Wno-unused-variable")
if(NOT DEFINED HEADERS)
file(GLOB HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.h)
endif()
if(NOT DEFINED SOURCES)
file(GLOB SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
endif()
source_group("Header Files" FILES ${HEADERS})
source_group("Source Files" FILES ${SOURCES})
add_executable(${PROJECT} ${HEADERS} ${SOURCES} ${QT_RESOURCES})
target_link_libraries(${PROJECT}
Qt5::Widgets
Qt5::Qml
Qt5::Quick
)
+28
View File
@@ -0,0 +1,28 @@
#include "stdafx.h"
#include <QApplication>
#include <QQmlApplicationEngine>
#include <QMessageBox>
int main(int argc, char** argv)
{
QApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
int result = 0;
try
{
result = app.exec();
}
catch(const std::exception& ex)
{
QString message = ex.what();
QMessageBox::critical(nullptr, qtTrId("Error"), message);
result = -1;
}
return result;
}
+12
View File
@@ -0,0 +1,12 @@
import QtQuick 2.6
import QtQuick.Layouts 1.0
import QtQuick.Controls 1.0
ApplicationWindow
{
visible: true
width: 640
height: 480
title: qsTr("Minimal Qml")
}
+6
View File
@@ -0,0 +1,6 @@
<RCC>
<qresource prefix="/">
<file>qmldir</file>
<file>main.qml</file>
</qresource>
</RCC>
+2
View File
@@ -0,0 +1,2 @@
+2
View File
@@ -0,0 +1,2 @@
#pragma once