Browse Source

created project template

pull/2/head
Skycoder42 7 years ago
commit
a035c9b375
  1. 76
      .gitignore
  2. 7
      .qmake.conf
  3. 71
      .travis.yml
  4. 64
      appveyor.yml
  5. 2515
      doc/Doxyfile
  6. 22
      doc/doc.pro
  7. 38
      doc/doxme.py
  8. 59
      doc/gh_header.html
  9. BIN
      doc/images/GitHub_Logo.png
  10. 50
      doc/makedoc.sh
  11. 3
      examples/examples.pro
  12. 2
      examples/mvvmcore/mvvmcore.pro
  13. 18
      qtmvvm.pro
  14. 33
      src/mvvmcore/mvvmcore.pro
  15. 14
      src/mvvmcore/qpmx.json
  16. 12
      src/mvvmcore/qt_mvvmcore_global.h
  17. 33
      src/mvvmquick/mvvmquick.pro
  18. 14
      src/mvvmquick/qpmx.json
  19. 12
      src/mvvmquick/qt_mvvmquick_global.h
  20. 33
      src/mvvmwidgets/mvvmwidgets.pro
  21. 14
      src/mvvmwidgets/qpmx.json
  22. 12
      src/mvvmwidgets/qt_mvvmwidgets_global.h
  23. 9
      src/src.pro
  24. 8
      sync.profile
  25. 3
      tests/auto/auto.pro
  26. 14
      tests/auto/cmake/CMakeLists.txt
  27. 7
      tests/auto/cmake/cmake.pro
  28. 1
      tests/auto/mvvmcore/mvvmcore.pro
  29. 5
      tests/global/global.cfg
  30. 5
      tests/tests.pro

76
.gitignore

@ -0,0 +1,76 @@
# This file is used to ignore files which are generated
# ----------------------------------------------------------------------------
*~
*.autosave
*.a
*.core
*.moc
*.o
*.obj
*.orig
*.rej
*.so
*.so.*
*_pch.h.cpp
*_resource.rc
*.qm
.#*
*.*#
core
!core/
tags
.DS_Store
.directory
*.debug
Makefile*
*.prl
*.app
moc_*.cpp
ui_*.h
qrc_*.cpp
Thumbs.db
*.res
*.rc
/.qmake.cache
/.qmake.stash
# qtcreator generated files
*.pro.user*
# xemacs temporary files
*.flc
# Vim temporary files
.*.swp
# Visual Studio generated files
*.ib_pdb_index
*.idb
*.ilk
*.pdb
*.sln
*.suo
*.vcproj
*vcproj.*.*.user
*.ncb
*.sdf
*.opensdf
*.vcxproj
*vcxproj.*
# MinGW generated files
*.Debug
*.Release
# Python byte code
*.pyc
# Binaries
# --------
*.dll
*.exe
# qpmx
vendor
qpmx.user.json

7
.qmake.conf

@ -0,0 +1,7 @@
load(qt_build_config)
CONFIG += warning_clean exceptions c++14
win32:cross_compile: CONFIG += winrt
DEFINES += QT_DEPRECATED_WARNINGS QT_ASCII_CAST_WARNINGS
MODULE_VERSION = 1.0.0

71
.travis.yml

@ -0,0 +1,71 @@
language: cpp
services:
- docker
sudo: required
dist: trusty
osx_image: xcode9.2
env:
global:
- QPMX_CACHE_DIR=$HOME/.qpmx-cache
- QT_VER=5.10.0
- EXTRA_MODULES=.skycoder42
matrix:
include:
- os: linux
env:
- PLATFORM=gcc_64
- BUILD_DOC=true
- os: linux
env:
- PLATFORM=android_armv7
- os: linux
env:
- PLATFORM=android_x86
- os: osx
env:
- PLATFORM=clang_64
- os: osx
env:
- PLATFORM=ios
# only when using static tools
- os: linux
env:
- PLATFORM=static
- os: osx
env:
- PLATFORM=static
before_install:
- git clone https://github.com/Skycoder42/QtModules.git ./qtmodules-travis
- if [ "$TRAVIS_OS_NAME" == "osx" ]; then travis_wait 40 ./qtmodules-travis/ci/$TRAVIS_OS_NAME/setup.sh; else ./qtmodules-travis/ci/$TRAVIS_OS_NAME/setup.sh; fi
script:
- ./qtmodules-travis/ci/$TRAVIS_OS_NAME/build.sh
before_deploy:
- ./qtmodules-travis/ci/$TRAVIS_OS_NAME/upload-prepare.sh
deploy:
provider: releases
skip_cleanup: true
api_key:
secure: <travis encrypted key>
file_glob: true
file: install/opt/build_*_$QT_VER.tar.xz
on:
repo: <user/repository>
tags: true
before_cache:
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
- rm -fr $HOME/.gradle/caches/*/plugin-resolution/
- rm -fr $QPMX_CACHE_DIR/locks
cache:
directories:
- $HOME/.gradle/caches/
- $HOME/.gradle/wrapper/
- $HOME/.android/build-cache
- $QPMX_CACHE_DIR

64
appveyor.yml

@ -0,0 +1,64 @@
image:
- Visual Studio 2017
- Visual Studio 2015
version: build-{build}
environment:
QT_VER: 5.10.0
EXTRA_MODULES: .skycoder42
matrix:
- PLATFORM: msvc2017_64
- PLATFORM: winrt_x64_msvc2017
- PLATFORM: winrt_x86_msvc2017
- PLATFORM: winrt_armv7_msvc2017
- PLATFORM: msvc2015_64
- PLATFORM: msvc2015
- PLATFORM: mingw53_32
# only when using static tools
- PLATFORM: static
matrix:
exclude:
- PLATFORM: msvc2017_64
image: Visual Studio 2015
- PLATFORM: winrt_x64_msvc2017
image: Visual Studio 2015
- PLATFORM: winrt_x86_msvc2017
image: Visual Studio 2015
- PLATFORM: winrt_armv7_msvc2017
image: Visual Studio 2015
- PLATFORM: msvc2015_64
image: Visual Studio 2017
- PLATFORM: msvc2015
image: Visual Studio 2017
- PLATFORM: mingw53_32
image: Visual Studio 2017
- PLATFORM: static
image: Visual Studio 2015
install:
- git clone https://github.com/Skycoder42/QtModules.git .qtmodules-travis
- .qtmodules-travisciwinsetup.bat
build_script:
- .qtmodules-travisciwinbuild.bat
after_build:
- .qtmodules-travisciwinupload-prepare.bat
artifacts:
- path: installbuild_*_%QT_VER%.zip
deploy:
provider: GitHub
auth_token:
secure: <your encrypted token>
artifact: /.*.zip/
force_update: false
on:
appveyor_repo_tag: true
cache:
- 'C:UsersappveyorAppDataLocalSkycoder42qpmxcache -> appveyor.yml'

2515
doc/Doxyfile

File diff suppressed because it is too large

22
doc/doc.pro

@ -0,0 +1,22 @@
TEMPLATE = aux
OTHER_FILES += Doxyfile \
makedoc.sh \
doxme.py \
../README.md \
*.dox \
snippets/*.cpp \
images/*
system($$QMAKE_MKDIR $$shell_quote($$shell_path($$OUT_PWD/qtmvvm)))
docTarget.target = doxygen
docTarget.commands = $$PWD/makedoc.sh "$$PWD" "$$MODULE_VERSION" "$$[QT_INSTALL_BINS]" "$$[QT_INSTALL_HEADERS]" "$$[QT_INSTALL_DOCS]"
QMAKE_EXTRA_TARGETS += docTarget
docInst1.path = $$[QT_INSTALL_DOCS]
docInst1.files = $$OUT_PWD/qtmvvm.qch
docInst1.CONFIG += no_check_exist
docInst2.path = $$[QT_INSTALL_DOCS]
docInst2.files = $$OUT_PWD/qtmvvm
INSTALLS += docInst1 docInst2

38
doc/doxme.py

@ -0,0 +1,38 @@
#!/usr/bin/python
# $1 The readme to be transformed
# $pwd: dest dir
import sys
def readFirst(line, out):
if line[0:2] != "# ":
raise ValueError("Expected first line to start with '# '")
# skip the first line
out.write("[TOC]\n\n")
readCounter = 0
def readMore(line, out):
global readCounter
if line[0:2] == "##":
out.write(line[1:] + " {{#qtmvvm_readme_label_{}}}\n".format(readCounter))
readCounter += 1
else:
out.write(line + "\n")
#read args
readme = sys.argv[1]
doxme = "./README.md"
inFile = open(readme, "r")
outFile = open(doxme, "w")
isFirst = True
for line in inFile:
if isFirst:
readFirst(line[:-1], outFile)
isFirst = False
else:
readMore(line[:-1], outFile)
inFile.close();
outFile.close();

59
doc/gh_header.html

@ -0,0 +1,59 @@
<!-- HTML header for doxygen 1.8.13-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen $doxygenversion"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="$relpath^jquery.js"></script>
<script type="text/javascript" src="$relpath^dynsections.js"></script>
$treeview
$search
$mathjax
<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
$extrastylesheet
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<!--BEGIN TITLEAREA-->
<div id="titlearea">
<table cellspacing="0" cellpadding="0" style="display: inline;">
<tbody>
<tr style="height: 56px;">
<!--BEGIN PROJECT_LOGO-->
<td id="projectlogo"><img alt="Logo" src="$relpath^$projectlogo"/></td>
<!--END PROJECT_LOGO-->
<!--BEGIN PROJECT_NAME-->
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">$projectname
<!--BEGIN PROJECT_NUMBER-->&#160;<span id="projectnumber">$projectnumber</span><!--END PROJECT_NUMBER-->
</div>
<!--BEGIN PROJECT_BRIEF--><div id="projectbrief">$projectbrief</div><!--END PROJECT_BRIEF-->
</td>
<!--END PROJECT_NAME-->
<!--BEGIN !PROJECT_NAME-->
<!--BEGIN PROJECT_BRIEF-->
<td style="padding-left: 0.5em;">
<div id="projectbrief">$projectbrief</div>
</td>
<!--END PROJECT_BRIEF-->
<!--END !PROJECT_NAME-->
<!--BEGIN DISABLE_INDEX-->
<!--BEGIN SEARCHENGINE-->
<td>$searchbox</td>
<!--END SEARCHENGINE-->
<!--END DISABLE_INDEX-->
</tr>
</tbody>
</table>
<a style="float: right;" target="_blank" href="https://github.com/Skycoder42/QtDataSync">
<img style="padding: 10px;" src="$relpath^GitHub_Logo.png"/>
</a>
</div>
<!--END TITLEAREA-->
<!-- end header part -->

BIN
doc/images/GitHub_Logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

50
doc/makedoc.sh

@ -0,0 +1,50 @@
#!/bin/bash
# $1: $$SRCDIR
# $2: $$VERSION
# $3: $$[QT_INSTALL_BINS]
# $4: $$[QT_INSTALL_HEADERS]
# $5: $$[QT_INSTALL_DOCS]
# $pwd: dest dir
set -e
scriptDir=$(dirname "$0")
destDir="$(pwd)"
srcDir=$1
version=$2
verTag=$(echo "$version" | sed -e 's/\.//g')
qtBins=$3
qtHeaders=$4
qtDocs=$5
doxyTemplate="$srcDir/Doxyfile"
doxyRes=Doxyfile.generated
readme="$destDir/README.md"
doxme="$scriptDir/doxme.py"
python3 "$doxme" "$srcDir/../README.md"
cat "$doxyTemplate" > $doxyRes
echo "PROJECT_NUMBER = \"$version\"" >> $doxyRes
echo "INPUT += \"$readme\"" >> $doxyRes
echo "USE_MDFILE_AS_MAINPAGE = \"$readme\"" >> $doxyRes
echo "OUTPUT_DIRECTORY = \"$destDir\"" >> $doxyRes
echo "QHP_NAMESPACE = \"com.skycoder42.qtmvvm.$verTag\"" >> $doxyRes
echo "QHP_CUST_FILTER_NAME = \"Mvvm $version\"" >> $doxyRes
echo "QHP_CUST_FILTER_ATTRS = \"qtmvvm $version\"" >> $doxyRes
echo "QHG_LOCATION = \"$qtBins/qhelpgenerator\"" >> $doxyRes
echo "INCLUDE_PATH += \"$qtHeaders\"" >> $doxyRes
echo "GENERATE_TAGFILE = \"$destDir/qtmvvm/qtmvvm.tags\"" >> $doxyRes
if [ "$DOXY_STYLE" ]; then
echo "HTML_STYLESHEET = \"$DOXY_STYLE\"" >> $doxyRes
fi
if [ "$DOXY_STYLE_EXTRA" ]; then
echo "HTML_EXTRA_STYLESHEET = \"$DOXY_STYLE_EXTRA\"" >> $doxyRes
fi
for tagFile in $(find "$qtDocs" -name *.tags); do
if [ $(basename "$tagFile") != "qtmvvm.tags" ]; then
echo "TAGFILES += \"$tagFile=https://doc.qt.io/qt-5\"" >> $doxyRes
fi
done
cd "$srcDir"
doxygen "$destDir/$doxyRes"

3
examples/examples.pro

@ -0,0 +1,3 @@
TEMPLATE = subdirs
SUBDIRS = mvvmcore

2
examples/mvvmcore/mvvmcore.pro

@ -0,0 +1,2 @@
TEMPLATE = subdirs
QT_FOR_CONFIG += core

18
qtmvvm.pro

@ -0,0 +1,18 @@
load(qt_parts)
SUBDIRS += doc
doxygen.target = doxygen
doxygen.CONFIG = recursive
doxygen.recurse_target = doxygen
doxygen.recurse += doc
QMAKE_EXTRA_TARGETS += doxygen
lrelease.target = lrelease
lrelease.CONFIG = recursive
lrelease.recurse_target = lrelease
lrelease.recurse += sub_src
QMAKE_EXTRA_TARGETS += lrelease
DISTFILES += .qmake.conf \
sync.profile

33
src/mvvmcore/mvvmcore.pro

@ -0,0 +1,33 @@
TARGET = QtMvvmCore
QT = core
HEADERS += \
qt_mvvmcore_global.h
SOURCES +=
TRANSLATIONS += \
translations/qtmvvmcore_template.ts
DISTFILES += $$TRANSLATIONS
qpmx_ts_target.path = $$[QT_INSTALL_TRANSLATIONS]
qpmx_ts_target.depends += lrelease
INSTALLS += qpmx_ts_target
load(qt_module)
win32 {
QMAKE_TARGET_PRODUCT = "$$TARGET"
QMAKE_TARGET_COMPANY = "Skycoder42"
QMAKE_TARGET_COPYRIGHT = "Felix Barz"
} else:mac {
QMAKE_TARGET_BUNDLE_PREFIX = "com.skycoder42."
}
!ReleaseBuild:!DebugBuild:!system(qpmx -d $$shell_quote($$_PRO_FILE_PWD_) --qmake-run init $$QPMX_EXTRA_OPTIONS $$shell_quote($$QMAKE_QMAKE) $$shell_quote($$OUT_PWD)): error(qpmx initialization failed. Check the compilation log for details.)
else: include($$OUT_PWD/qpmx_generated.pri)
qpmx_ts_target.files -= $$OUT_PWD/$$QPMX_WORKINGDIR/qtmvvmcore_template.qm
qpmx_ts_target.files += translations/qtmvvmcore_template.ts

14
src/mvvmcore/qpmx.json

@ -0,0 +1,14 @@
{
"dependencies": [],
"license": {
"file": "",
"name": ""
},
"prcFile": "",
"priFile": "",
"priIncludes": [
],
"publishers": {
},
"source": false
}

12
src/mvvmcore/qt_mvvmcore_global.h

@ -0,0 +1,12 @@
#ifndef QTMVVMCORE_GLOBAL_H
#define QTMVVMCORE_GLOBAL_H
#include <QtCore/qglobal.h>
#if defined(QT_BUILD_MVVM_LIB)
# define Q_MVVMCORE_EXPORT Q_DECL_EXPORT
#else
# define Q_MVVMCORE_EXPORT Q_DECL_IMPORT
#endif
#endif // QTMVVMCORE_GLOBAL_H

33
src/mvvmquick/mvvmquick.pro

@ -0,0 +1,33 @@
TARGET = QtMvvmQuick
QT = core gui widgets mvvmcore
HEADERS += \
qt_mvvmquick_global.h
SOURCES +=
TRANSLATIONS += \
translations/qtmvvmquick_template.ts
DISTFILES += $$TRANSLATIONS
qpmx_ts_target.path = $$[QT_INSTALL_TRANSLATIONS]
qpmx_ts_target.depends += lrelease
INSTALLS += qpmx_ts_target
load(qt_module)
win32 {
QMAKE_TARGET_PRODUCT = "$$TARGET"
QMAKE_TARGET_COMPANY = "Skycoder42"
QMAKE_TARGET_COPYRIGHT = "Felix Barz"
} else:mac {
QMAKE_TARGET_BUNDLE_PREFIX = "com.skycoder42."
}
!ReleaseBuild:!DebugBuild:!system(qpmx -d $$shell_quote($$_PRO_FILE_PWD_) --qmake-run init $$QPMX_EXTRA_OPTIONS $$shell_quote($$QMAKE_QMAKE) $$shell_quote($$OUT_PWD)): error(qpmx initialization failed. Check the compilation log for details.)
else: include($$OUT_PWD/qpmx_generated.pri)
qpmx_ts_target.files -= $$OUT_PWD/$$QPMX_WORKINGDIR/qtmvvmquick_template.qm
qpmx_ts_target.files += translations/qtmvvmquick_template.ts

14
src/mvvmquick/qpmx.json

@ -0,0 +1,14 @@
{
"dependencies": [],
"license": {
"file": "",
"name": ""
},
"prcFile": "",
"priFile": "",
"priIncludes": [
],
"publishers": {
},
"source": false
}

12
src/mvvmquick/qt_mvvmquick_global.h

@ -0,0 +1,12 @@
#ifndef QTMVVMWIDGETS_GLOBAL_H
#define QTMVVMWIDGETS_GLOBAL_H
#include <QtCore/qglobal.h>
#if defined(QT_BUILD_MVVM_LIB)
# define Q_MVVMWIDGETS_EXPORT Q_DECL_EXPORT
#else
# define Q_MVVMWIDGETS_EXPORT Q_DECL_IMPORT
#endif
#endif // QTMVVMWIDGETS_GLOBAL_H

33
src/mvvmwidgets/mvvmwidgets.pro

@ -0,0 +1,33 @@
TARGET = QtMvvmWidgets
QT = core gui widgets mvvmcore
HEADERS += \
qt_mvvmwidgets_global.h
SOURCES +=
TRANSLATIONS += \
translations/qtmvvmwidgets_template.ts
DISTFILES += $$TRANSLATIONS
qpmx_ts_target.path = $$[QT_INSTALL_TRANSLATIONS]
qpmx_ts_target.depends += lrelease
INSTALLS += qpmx_ts_target
load(qt_module)
win32 {
QMAKE_TARGET_PRODUCT = "$$TARGET"
QMAKE_TARGET_COMPANY = "Skycoder42"
QMAKE_TARGET_COPYRIGHT = "Felix Barz"
} else:mac {
QMAKE_TARGET_BUNDLE_PREFIX = "com.skycoder42."
}
!ReleaseBuild:!DebugBuild:!system(qpmx -d $$shell_quote($$_PRO_FILE_PWD_) --qmake-run init $$QPMX_EXTRA_OPTIONS $$shell_quote($$QMAKE_QMAKE) $$shell_quote($$OUT_PWD)): error(qpmx initialization failed. Check the compilation log for details.)
else: include($$OUT_PWD/qpmx_generated.pri)
qpmx_ts_target.files -= $$OUT_PWD/$$QPMX_WORKINGDIR/qtmvvmwidgets_template.qm
qpmx_ts_target.files += translations/qtmvvmwidgets_template.ts

14
src/mvvmwidgets/qpmx.json

@ -0,0 +1,14 @@
{
"dependencies": [],
"license": {
"file": "",
"name": ""
},
"prcFile": "",
"priFile": "",
"priIncludes": [
],
"publishers": {
},
"source": false
}

12
src/mvvmwidgets/qt_mvvmwidgets_global.h

@ -0,0 +1,12 @@
#ifndef QTMVVMWIDGETS_GLOBAL_H
#define QTMVVMWIDGETS_GLOBAL_H
#include <QtCore/qglobal.h>
#if defined(QT_BUILD_MVVM_LIB)
# define Q_MVVMWIDGETS_EXPORT Q_DECL_EXPORT
#else
# define Q_MVVMWIDGETS_EXPORT Q_DECL_IMPORT
#endif
#endif // QTMVVMWIDGETS_GLOBAL_H

9
src/src.pro

@ -0,0 +1,9 @@
TEMPLATE = subdirs
CONFIG += ordered
SUBDIRS += mvvmcore \
mvvmwidgets \
mvvmquick
prepareRecursiveTarget(lrelease)
QMAKE_EXTRA_TARGETS += lrelease

8
sync.profile

@ -0,0 +1,8 @@
%modules = (
"QtMvvmCore" => "$basedir/src/mvvmcore",
"QtMvvmWidgets" => "$basedir/src/mvvmwidgets",
"QtMvvmQuick" => "$basedir/src/mvvmquick"
);
# Force generation of camel case headers for classes inside QtDataSync namespaces
$publicclassregexp = "QtMvvm::.+";

3
tests/auto/auto.pro

@ -0,0 +1,3 @@
TEMPLATE = subdirs
SUBDIRS += cmake mvvmcore

14
tests/auto/cmake/CMakeLists.txt

@ -0,0 +1,14 @@
cmake_minimum_required(VERSION 2.8)
project(qmake_cmake_files)
enable_testing()
find_package(Qt5Core REQUIRED)
include("${_Qt5CTestMacros}")
test_module_includes(
Mvvm QMvvm
)

7
tests/auto/cmake/cmake.pro

@ -0,0 +1,7 @@
# Cause make to do nothing.
TEMPLATE = subdirs
CMAKE_QT_MODULES_UNDER_TEST = mvvm
CONFIG += ctest_testcase

1
tests/auto/mvvmcore/mvvmcore.pro

@ -0,0 +1 @@
TEMPLATE = subdirs

5
tests/global/global.cfg

@ -0,0 +1,5 @@
<config>
<modules>
<module name="QtMvvm" qtname="mvvm"/>
</modules>
</config>

5
tests/tests.pro

@ -0,0 +1,5 @@
TEMPLATE = subdirs
CONFIG += no_docs_target
SUBDIRS += auto
Loading…
Cancel
Save