added build manager

This commit is contained in:
Andrei Yankovich 2018-05-30 07:37:19 +03:00
parent 75fae751b6
commit 1d8307ea7a
8 changed files with 75 additions and 21 deletions

1
.gitignore vendored
View File

@ -53,5 +53,6 @@ snap/plugins/__pycache__/
b/ b/
Build*/ Build*/
Release*/
*.stash *.stash

37
snap/dumpSnap/snapcraft.yaml Executable file
View File

@ -0,0 +1,37 @@
name: qt-deployer
version: '1.0test2'
summary: Deploy Qt Project
description: |
Deploy Qt Projects. this application extract all depends library of executable and create launch script for your application.
grade: stable # must be 'stable' to release into candidate/stable channels
confinement: strict # use 'strict' once you have the right plugs and slots
icon: snap/gui/icon.png
apps:
qt-deployer:
command: bin/qt-deployer
plugs: [desktop, unity7, home, opengl, x11, wayland]
environment:
LD_LIBRARY_PATH: $SNAP/lib
QML_IMPORT_PATH: $SNAP/qml
QML2_IMPORT_PATH: $SNAP/qml
QT_PLUGIN_PATH: $SNAP/plugins
QT_QPA_PLATFORM_PLUGIN_PATH: $SNAP/plugins/platforms
parts:
qt-deployer:
plugin: dump
source: app/
stage-packages:
# Here for the plugins-- they're not linked in automatically.
- libx11-xcb-dev
- libglu1-mesa-dev
- libxrender-dev
- libxi-dev

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

@ -38,7 +38,24 @@ const QString& BuildManager::log() const{
return tempLog; return tempLog;
} }
bool BuildManager::initFolderName() { bool BuildManager::createFulder(QDir& dir, QString &path, const QString &name) const{
path = dir.absolutePath() + "/" + name;
if(dir.exists(path) && !QDir(path).removeRecursively()){
path.clear();
return false;
}
if(!dir.mkdir(path)){
path.clear();
return false;
}
return true;
}
bool BuildManager::initFolders() {
QDir dir(m_projectdir); QDir dir(m_projectdir);
if(!dir.cd("..")) { if(!dir.cd("..")) {
return false; return false;
@ -72,15 +89,11 @@ bool BuildManager::initFolderName() {
} }
projectName = proFile.mid(beginTarget, longTraget); projectName = proFile.mid(beginTarget, longTraget);
tempBuildFolder = dir.absolutePath() + "/Build-" + projectName; if(!createFulder(dir, tempBuildFolder, "Build-" + projectName)){
if(dir.exists(tempBuildFolder) && !QDir(tempBuildFolder).removeRecursively()){
tempBuildFolder.clear();
return false; return false;
} }
if(!dir.mkdir(tempBuildFolder)){ if(!createFulder(dir, m_outputdir, "Release-" + projectName)){
tempBuildFolder.clear();
return false; return false;
} }
@ -88,7 +101,7 @@ bool BuildManager::initFolderName() {
} }
bool BuildManager::build(){ bool BuildManager::build(){
if(!initQMake() || !initFolderName()){ if(!initQMake() || !initFolders()){
return false; return false;
} }

View File

@ -15,7 +15,8 @@ private:
QString projectName; QString projectName;
QProcess pQMake; QProcess pQMake;
bool initFolderName(); bool createFulder(QDir& dir, QString& path, const QString& name) const;
bool initFolders();
bool initQMake(); bool initQMake();
private slots: private slots:

View File

@ -26,22 +26,22 @@ MainManager::MainManager(CppManager *cpp, QmlManager *qml, OutputManager *out,
} }
void MainManager::buildFinished(){ void MainManager::buildFinished(){
emit outDirChanged();
m_qml->start(); m_qml->start();
m_plg->start(); m_plg->start();
m_cpp->start(getAllExecutables()); m_cpp->start(getAllExecutables());
} }
void MainManager::prepare(const QString &qtdir, const QString &projectdir, const QString &outdir) void MainManager::prepare(const QString &qtdir, const QString &projectdir)
{ {
QStringList list; QStringList list;
list << qtdir << projectdir << outdir; list << qtdir << projectdir ;
for (QString &S : list) for (QString &S : list)
if (S[S.count() - 1] == '/') S.remove(S.count() - 1, 1); if (S[S.count() - 1] == '/') S.remove(S.count() - 1, 1);
m_qtdir = list[0]; m_qtdir = list[0];
m_projectdir = list[1]; m_projectdir = list[1];
m_outputdir = list[2];
m_bld->build(); m_bld->build();
} }
@ -73,6 +73,10 @@ bool MainManager::pathExists(bool isdir, const QString &path)
return QFile(path).exists(); return QFile(path).exists();
} }
const QString& MainManager::outDir() const{
return m_outputdir;
}
void MainManager::setState(int state) void MainManager::setState(int state)
{ {
if (m_state == state) return; if (m_state == state) return;

View File

@ -13,6 +13,7 @@ class MainManager : public BaseClass
Q_OBJECT Q_OBJECT
Q_PROPERTY(int state READ state WRITE setState NOTIFY stateChanged) Q_PROPERTY(int state READ state WRITE setState NOTIFY stateChanged)
Q_PROPERTY(QString outDir READ outDir NOTIFY outDirChanged)
CppManager *m_cpp; CppManager *m_cpp;
QmlManager *m_qml; QmlManager *m_qml;
@ -35,9 +36,10 @@ public:
int state() const; int state() const;
public slots: public slots:
void prepare(const QString &qtdir, const QString &projectdir, const QString &outdir); void prepare(const QString &qtdir, const QString &projectdir);
void start(bool erase); void start(bool erase);
const QString& outDir() const;
bool hasPrems(const QString &path); bool hasPrems(const QString &path);
QString stringFromUrl(QString url); QString stringFromUrl(QString url);
@ -47,6 +49,7 @@ public slots:
signals: signals:
void stateChanged(int state); void stateChanged(int state);
void outDirChanged();
}; };
#endif // MAINMANAGER_H #endif // MAINMANAGER_H

View File

@ -28,11 +28,6 @@ Page {
title: qsTr("Project Directory") title: qsTr("Project Directory")
} }
PathChooser {
id: outdir
title: qsTr("Final Output Directory")
}
Item { Item {
Layout.fillWidth: true Layout.fillWidth: true
Layout.fillHeight: true Layout.fillHeight: true
@ -42,12 +37,12 @@ Page {
text: qsTr("Next") text: qsTr("Next")
Material.background: buttonColor Material.background: buttonColor
Layout.alignment: Qt.AlignRight Layout.alignment: Qt.AlignRight
enabled: qtdir.confirmed && projectdir.confirmed && outdir.confirmed enabled: qtdir.confirmed && projectdir.confirmed
onClicked: { onClicked: {
MainManager.prepare(qtdir.content, projectdir.content, outdir.content) MainManager.prepare(qtdir.content, projectdir.content)
prp.outdir = outdir.content prp.outdir = MainManager.outDir
swipeview.currentIndex = 1 swipeview.currentIndex = 1
} }
} }