При запуске проекта через qt creator всё работает нормально. Если хочу запустить скомпилированный exe-шник, выдает необходимость наличия динамических либов qt. На своём компе я могу прописать их в path, но как быть, если я захочу запустить приложение на другом компьютере? windeployqt пробовал, он просто закинул их в папку, при запуске выдавало ошибку входа в процедуру в Qt5Widget.dll. Можно ли как-то настроить компилятор(mingw 64 bit), чтобы он статически пихал все нужные либы сразу в приложение? С пожеланиями пойти в гугл можете идти куда-нибудь в другое место.
Вам стоит пойти не в гугл, а на сайт Qt - и выяснить, что статическая компиляция библиотеки нарушает лицензию LGPL. Вряд ли вы хотите оплачивать коммерческую лицензию на Qt, так что все-таки разбирайтесь с динамической компиляцией.
Adamos, ммм, специально для этого у нас есть опенсорс, и вот эта инструкция, которая нихера не работает: https://wiki.qt.io/Building_a_static_Qt_for_Window... Я скомпилировать хочу не либу, а приложение, чтобы внутри него была либа qt'шная, которая сделана была до меня
leakt, если вы собираетесь писать приложение с закрытым кодом, вам без разницы, заработает статическая компиляция или нет. Потому что использовать ее бесплатно вы все равно не сможете.
Adamos, не надо меня идиотом выставлять, я прекрасно знаю про лицензию LGPL, я не собираюсь что-либо написанное мной использовать в коммерческих целях, а уж тем более закрывать исходники
leakt, я вам, не идиоту, полчаса назад задал вопрос "ваше приложение - опенсорс?" и не получил внятного ответа. Поэтому и продолжал настаивать. Окей, теперь возражений не имею.
Советую дополнить вопрос тем, что вы пробовали насчет статической компиляции (с командами и краткими результатами) и что из этого получилось (с текстом ошибок). Гадать, что у вас могло пойти не так, никто не будет.
windeployqt пробовал, он просто закинул их в папку, при запуске выдавало ошибку входа в процедуру в Qt5Widget.dll.
А это потому что вы не тот windeployqt используете. У вас установлено несколько версий Qt, вы своё приложение собираете одной версией, а windeployqt вызываете из другой версии, отсюда и несовместимость.
Сразу уточню, что Qt 5.13.0 MinGW32, Qt 5.13.0 MinGW64, Qt 5.13.0 MSVC 2015, Qt 5.13.0 MSVC 2017 - это всё РАЗНЫЕ версии Qt! Сам Qt один и тот же, но он собран разными компиляторами и имеет разные библиотеки.
leakt, может быть у вас просто установлено несколько разных версий Qt? windeployqt копирует абсолютно тот же набор библиотек, который используется при запуске проекта из QtCreator.
Если Qt 5.13.0 у вас установлен в директории С:/Qt5.13.0, то windeployqt нужно вызывать из директории С:/Qt5.13.0/5.13.0/mingw73_32/bin при использовании компилятора MinGW.
Правильнее, конечно, просто открыть терминал с настройками под необходимую версию Qt
обратите внимание, что это "разные" терминалы и они вызывают windeployqt из разных директорий.
Довольно интересно, потому что у вас этот код на винде даже компилироваться не должен:
#if QT_CONFIG(thread) && defined(_POSIX_THREAD_SAFE_FUNCTIONS)
// Use the reentrant version of localtime() where available
// as is thread-safe and doesn't use a shared static data area
tm *res = 0;
res = localtime_r(&secsSinceEpoch, &local);
if (res)
valid = true;
#elif defined(Q_CC_MSVC)
if (!_localtime64_s(&local, &secsSinceEpoch))
valid = true;
#else
// Returns shared static data which may be overwritten at any time
// So copy the result asap
tm *res = 0;
res = localtime(&secsSinceEpoch);
if (res) {
local = *res;
valid = true;
}
#endif
А вы по инструкции собирали, выставили там все переменные окружения и т.п.? И как этап конфигурации прошёл, все ли тесты прошли?
Я имею ввиду вот эти инструкции: https://wiki.qt.io/Building_a_static_Qt_for_Window...
Vitaly, да, тесты не все прошли. В PATH указывал python последней версии, perl active'ский. Вот лог после конфигурации: https://pastebin.com/vXeGb5sL
Сейчас стартанул make clean, чтобы на чистую накатить
leakt, make clean делать не надо, это и долго и не всегда надёжно. Рекомендую или запускать "git clean -dfx" для всех подмодулей, либо shadow build делать (собирать не в директории с исходниками) и просто директорию сборки пересоздавать. Это будет намного быстрее, почти мгновенно.
leakt, Проблема вся в том, что таких мест, где localtime_r используется, в Qt несколько, и разбросаны они по разным модулям. Помимо этого, если нет нужных дефайнов, то могут появиться другие неожиданные ошибки в других местах.
Поэтому и рекомендую разобраться, почему система сборки не добавляет нужные дефайны.