[SOLVED] Собрать EXE



  • Здравствуйте. Помогите собрать exe. Статический, не зависящий от Qt и что бы запускалось на разных компьютерах. Либы пробовал пихать вместе с ехе, на том компьютере где есть Qt запустилось, а на том где нету - соответственно нет.



  • Вы собирали со статическими библиотеками Qt?
    Если собирали с DLL то вот "инфа":http://qt-project.org/wiki/Deploy_an_Application_on_Windows какие файлы надо устанавливать.



  • Пытался собрать со статическими. У меня версия Qt 5.1.1, может из за этого и не получилось. Собрал через "релиз". Нашел в папке exe файл. К нему попытался подвязать либы.

    [quote author="andreyc" date="1397126179"]Вы собирали со статическими библиотеками Qt?
    Если собирали с DLL то вот "инфа":http://qt-project.org/wiki/Deploy_an_Application_on_Windows какие файлы надо устанавливать.[/quote]



  • я к сожалению не большой спец в windows компиляции
    а вот это "руководство":http://qt-project.org/doc/qt-5/windows-deployment.html вы смотрели

    [quote author="moomot" date="1397126332"]К нему попытался подвязать либы. [/quote]
    А что значит подвязать либы к exe файлу?
    Если он уже собран с динамическими либами, то их надо с собой тащить и прописывать в PATH ту директрорию где они будут лежать
    Если же exe собран статически то ничего другого ему не нужно

    [quote author="moomot" date="1397126332"]Собрал через “релиз”. [/quote]
    Это не значит, что exe будет собран статически. Надо смотреть какие опции использованы и какие библиотеки использовались.



  • А как мне собрать статически?



  • Если я правильно понял инструкцию то вначале надо пересобрать Qt статически
    @
    cd C:\path\to\Qt
    configure -static <другие опции>
    @

    после этого пересобрать свой проект предварительно удалив существующий билд
    @
    nmake clean
    qmake -config release
    nmake
    @



  • nmake command not found
    [quote author="andreyc" date="1397140220"]Если я правильно понял инструкцию то вначале надо пересобрать Qt статически
    @
    cd C:\path\to\Qt
    configure -static <другие опции>
    @

    после этого пересобрать свой проект предварительно удалив существующий билд
    @
    nmake clean
    qmake -config release
    nmake
    @

    [/quote]



  • Какая версия Qt у вас? MinGW или VS
    Попробуйте make
    А Qt вы пересобрали и установили ?



  • QT 5.1.1
    установил еще одну такую именно для статика.
    Порядок действий:
    @To build static applications, build Qt statically by configuring Qt with -static:
    cd C:\path\to\Qt
    configure -static <any other options you need>@
    для того что бы пользоваться configure я нашел именно ту директорию где лежит configure.exe configure.pro и перешел к ней через cd
    Так как если просто перейти в папку Qt, то напишет, что "configure" не является внутренней или внешней командой..
    Директория которая у меня: C:/QTSRC/5.1.1/Src/qtbase/
    После того как я нашел где лежит configure - перешел туда.
    Потом прописал
    configure -static, оно спросило какую версию, я выбрал open source, подтвердил, и оно мне выбило типо:
    WARNING: The DirectX SDK could not be detected:
    There is no Direct X SDK installed or the environment variable "DXSDK_DIR" is not set.
    Disabling the ANGLE backend.

    Warning: Using OpenGL ES 2.0 withou ANGLE.
    Specify -opengl desktop to use Open GL.
    The build will most likely fail.
    Press eny key to continue...

    Я нажал любую клавишу, оно погнало дальше, и написало:
    Qt is now configured for building. Just run mingw32-make.

    Прописываю дальше nmake clean, пишет не знает что такое nmake. То же и с make.
    Пишу qmake clean, пишет что не может найти файл clean.

    [quote author="andreyc" date="1397149090"]Какая версия Qt у вас? MinGW или VS
    Попробуйте make
    А Qt вы пересобрали и установили ?
    [/quote]



  • Qt 5.1.1 для Windows зависит от компилятора который установлен.
    Если это Visual Studio то надо ставить Qt (VS), если нету VisualStudio то надо ставить Qt (MinGW) оно идёт со своим компилятором и прочим.

    Если установлен Qt (VS) то надо использовать nmake из VisualStudio
    для Qt (MinGW) надо использовать make или mingw32-make



  • использую minigw32-make - покатило, но на одном компьютере уже минут 15 строки бегут. А на втором тупо зациклилось, вход в директорию, выход, вход, выход.



  • Создалось, в папке release появился exe. Но по прежнему требует библиотеки. Закинул библиотеки снова - не помогает.
    [quote author="andreyc" date="1397150235"]Qt 5.1.1 для Windows зависит от компилятора который установлен.
    Если это Visual Studio то надо ставить Qt (VS), если нету VisualStudio то надо ставить Qt (MinGW) оно идёт со своим компилятором и прочим.

    Если установлен Qt (VS) то надо использовать nmake из VisualStudio
    для Qt (MinGW) надо использовать make или mingw32-make
    [/quote]



  • Qt большая библиотека, время сборки зависит от компьютера. у меня qtbase занимает минут 20-25 собрать.

    возможно что на втором вы собираете второй раз и make просто перебирает все директории и пытается найти изменёные файлы.

    Лучше собираеть на свежих исходниках.

    Я беру архив отсюда "Qt 5.1.1":http://download.qt-project.org/official_releases/qt/5.1/5.1.1/single/ или "Qt 5.2.1":http://download.qt-project.org/official_releases/qt/5.2/5.2.1/single/



  • [quote author="moomot" date="1397154107"]Создалось, в папке release появился exe. Но по прежнему требует библиотеки. Закинул библиотеки снова - не помогает.[/quote]

    Что показывает "DependencyWalker":http://www.dependencywalker.com/ на вашем exe ?

    вы собрали и установили Qt ?



  • Вот такое:
    !http://cs617428.vk.me/v617428771/68f1/X4WoTcTiaHQ.jpg(screen)!
    [quote author="andreyc" date="1397154383"][quote author="moomot" date="1397154107"]Создалось, в папке release появился exe. Но по прежнему требует библиотеки. Закинул библиотеки снова - не помогает.[/quote]

    Что показывает "DependencyWalker":http://www.dependencywalker.com/ на вашем exe ?

    вы собрали и установили Qt ?

    [/quote]



  • это на той машине где не работает или на девелоперской?
    тут похоже что ругается на какие-то другие библиотеки

    а что говорит в консоле когда запускаете на что ругается?



  • на 2-ух машинах стоит Qt. Если скопировать dll в папку вместе с прогой, то работает, но только на той где это делалось. И + весят больше 40 мб библиотеки.
    [quote author="andreyc" date="1397156225"]это на той машине где не работает или на девелоперской?
    тут похоже что ругается на какие-то другие библиотеки

    а что говорит в консоле когда запускаете на что ругается?[/quote]



  • сейчас ваше приложение собрано с динамической Qt
    вот "тут":http://qt-project.org/wiki/Deploy_an_Application_on_Windows есть картинка где показано какие либы брать и куда складываеть чтобы получился рабочий пакет.

    если же всё-таки хотите собрать статически то надо взять исходники Qt, я ссылки давал выше, и собрать Qt, потом пересобрать свой проект с этой Qt.
    но exe файл будет весить не мало.



  • Ну дак я так же и сделал, статически собирал. И вот тот скрин статика.
    [quote author="andreyc" date="1397157624"]сейчас ваше приложение собрано с динамической Qt
    вот "тут":http://qt-project.org/wiki/Deploy_an_Application_on_Windows есть картинка где показано какие либы брать и куда складываеть чтобы получился рабочий пакет.

    если же всё-таки хотите собрать статически то надо взять исходники Qt, я ссылки давал выше, и собрать Qt, потом пересобрать свой проект с этой Qt.
    но exe файл будет весить не мало.
    [/quote]



  • "Ничего не понимаю" (с) Падал прошлогодний снег

    На скрине показывает что testing.exe зависит от qt5core.dll
    qt5core.dll - это динамическая библиотека

    то есть вы сделали
    @
    cd Qt dir
    configure -static ...
    make
    install
    @

    потом собрали свой проект использую эту свежесобраную Qt
    и получилось то что получилось

    возможно у вас остались старые библиотеки Qt и поэтому они подцепились вместо статических

    я бы посоветовал переименовать Qt/lib в Qt/lib_original попробовать
    make install из исходников опять
    и потом полностью перестроить свой проект



  • а ещё лучше ничего не переименовыать а проинсталировать в другую директорию
    @
    cd Qt-source
    configure -prefix=<какая-нибудь другая директория не под Qt> -static
    make
    make install
    @
    и уже использовать эту новую директорию для своего проекта



  • 2 вариант - пишет нет доступа. Пробовал под админом - не покатило.
    "я бы посоветовал переименовать Qt/lib в Qt/lib_original попробовать
    make install из исходников опять" - подробнее можно?)
    [quote author="andreyc" date="1397158826"]а ещё лучше ничего не переименовыать а проинсталировать в другую директорию
    @
    cd Qt-source
    configure -prefix=<какая-нибудь другая директория не под Qt> -static
    make
    make install
    @
    и уже использовать эту новую директорию для своего проекта[/quote]



  • [quote author="moomot" date="1397161271"]"я бы посоветовал переименовать Qt/lib в Qt/lib_original попробовать make install из исходников опять" - подробнее можно?)[/quote]

    Это зависит от того какая у вас инсталяция, если всё в одном Qt и QtCreator то вариант с переименовыванием не очень хороший потому что от этих же библиотек зависит QtCreator и если директорию убрать то QtCreator перестанет работать.

    не могли бы вы запостить лог ваших команд когда пересобирали Qt
    может быть там какая-нибудь опечатка вкралась



  • В смысле какая инсталяция? Напишите мне подробно какую нужно использовать)
    [quote author="andreyc" date="1397162761"][quote author="moomot" date="1397161271"]"я бы посоветовал переименовать Qt/lib в Qt/lib_original попробовать make install из исходников опять" - подробнее можно?)[/quote]

    Это зависит от того какая у вас инсталяция, если всё в одном Qt и QtCreator то вариант с переименовыванием не очень хороший потому что от этих же библиотек зависит QtCreator и если директорию убрать то QtCreator перестанет работать.

    не могли бы вы запостить лог ваших команд когда пересобирали Qt
    может быть там какая-нибудь опечатка вкралась

    [/quote]



  • Ура. Получилось. Делал по вот этой инструкции.

    1. Открываем папку (по умолчанию) C:/Qt/5.1.1/5.1.1/Src

    2. Ищем файл configure и открываем его любым текстовым редактором
      2.1) Ищем строчку: "QT_DEFAULT_BUILD_PARTS="libs tools examples"" и убираем оттуда "examples"
      2.2) Ищем строчку "CFG_COMPILE_EXAMPLES=yes" и заменяем "yes" на "no"
      2.3) Ищем строчку "QT_INSTALL_EXAMPLES=yes" и заменяем "yes" на "no"
      2.4) Сохраняем файл

    3. Открываем папку C:/Qt/5.1.1/5.1.1/Src/mkspecs/win32-g++ (для компилятора mingw)

    4. Открываем файл qmake.conf любым текстовым редактором
      4.1) Ищем строчку "QMAKE_LFLAGS=" и заменяем ее на "QMAKE_LFLAGS=-static -static-libgcc" и сохраняем файл

    5. Открываем терминал Qt'a, называется он так: "Qt 5.1.1 for Desktop (MinGW)" (в пуске с Qt'ом найти можно)

    6. Вводим след. команды:
      @cd C:/Qt/5.1.1/5.1.1/Src/qtbase
      configure.exe -debug-and-release -opensource -c++11 -static -opengl desktop -no-angle -no-vcproj@
      Когда спросит про лицензию - принимаем (y)

    7. Ждем...

    8. Вводим след. команду:
      @mingw32-make.exe sub-src
      @

    9. Ждем...

    10. После завершения закрываем консоль и открываем Qt Creator

    11. Инструменты -> Параметры -> Сборка и запуск -> Профили Qt -> Добавить
      11.1) Выбираем qmake.exe, который расположен по след. пути: "C:/Qt/5.1.1/5.1.1/Src/qtbase/bin"

    12. Выбираем Комплекты -> Добавить -> Профиль Qt (тут выбираем наш новый профиль)

    13. Создаем новое приложение, собираем и радуемся exe файлу размером в 13мб, который содержит в себе 1 жалкую кнопочку



  • Замечательно. Спасибо что опубликовали решение.

    Я не думаю что стоит беспокоится по поводу размера, потому что две и более кнопочки не увеличат файл в два и более раз. Скорее всего это будут те же 13 мб.

    PS: Добавьте пожалуйста "[SOLVED]" в заголовок вашего сообщения, чтобы другие добрые люди могли найти решение.



  • И Вам большое спасибо за то что направили в правильное русло)
    Название изменил!
    [quote author="andreyc" date="1397242058"]Замечательно. Спасибо что опубликовали решение.

    Я не думаю что стоит беспокоится по поводу размера, потому что две и более кнопочки не увеличат файл в два и более раз. Скорее всего это будут те же 13 мб.

    PS: Добавьте пожалуйста "[SOLVED]" в заголовок вашего сообщения, чтобы другие добрые люди могли найти решение.[/quote]


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.