Автоматизация компиляции и запуска QtE5-приложений в Windows

Библиотека QtE5 очень удобная и нужная вещь, но иногда требуется добиться того, чтобы из некоторой среды разработки или какого-либо редактора можно было легко и быстро скомпилировать
QtE5-приложение. Дело обычно осложняется еще и тем, что после компиляции такого приложения, саму программу просто так не запустить требуется набор dll-файлов и картинок, которые распространяются вместе с QtE5. Естественно, сразу возникает вариант копирования всех нужных файлов QtE5 в какую-нибудь уединенную папку, однако, постоянное перемещение исполняемых файлов в нее может весьма быстро надоесть…

Решить проблему можно написав свой собственный сборщик QtE5-приложений, например такой:

import std.file;
import std.path;
import std.process;
import std.stdio;
import std.string;

class QtECompiler
{
    private
    {
        string sourceFileName;
    }

    this(string sourceFileName)
    {
        this.sourceFileName = sourceFileName;
    }

    void run()
    {
        if (sourceFileName.exists)
        {
            auto dmd = executeShell(`dmd -m32 -O -release ` ~ sourceFileName ~ ` qte5`);

           if (dmd.output == "")
           {
                auto executableFile = sourceFileName.replace(`.d`, `.exe`);

                if (executableFile.exists)
                {
                    auto executableFileName = executableFile.baseName;
                    copy(executableFile, `D:\Sources of D libraries\QtE5\windows32\` ~ executableFileName);
                    
                    auto exe = executeShell(`D:\Sources of D libraries\QtE5\windows32\` ~ executableFileName);
                    writeln(exe.output);
                }
            }
            else
            {
                writeln(`Compilation failed !`);
                writeln(dmd.output);
            }
        }
        else
        {
            writefln(`File %s doesn't exist`, sourceFileName);
        }
    }
}

void main(string[] args)
{
    QtECompiler compiler = new QtECompiler(args[1]);
    compiler.run;
}

Эта небольшая программка предполагает, что минимальный runtime QtE5 находиться в папке «D:\Sources of D libraries\QtE5\windows32\» (замените этот путь на свой), куда и будет автоматически перемещен исполняемый файл приложения. В случае, если файл исходного кода на D существует и в нем нет синтаксических ошибок, произойдет компиляция в исполняемый файл в режиме оптимизации и последующий запуск приложения; иначе будет выведено сообщение о том, что компиляция не удалась.

Добавить комментарий