Qt6.5.0. Сборка помимо .exe файла генерирует libdll.a файл

собирал Qt6.5.0 из исходников. Компилятор: mingw13.2.0 posix seh msvcrt брал здесь Cmake: 3.28.20231208-g39b9808 Ninja: 1.11.1

Выполненные шаги:

  1. configure.bat -static -static-runtime -release -qpa windows -c++std c++17 -cmake-generator "Ninja" -accessibility -no-pch -linker lld -opensource -confirm-license
  2. cmake --build . --parallel
  3. cmake --install .
  4. Создал проект Qt Widgets в Clion: CMakeLists.txt:
cmake_minimum_required(VERSION 3.0)
project(untitled)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_PREFIX_PATH "D:/qtBuilds/6.5.0posix-seh-msvcrt/lib/cmake")

find_package(Qt6 COMPONENTS
        Core
        Gui
        Widgets
        REQUIRED)

add_executable(untitled main.cpp)
target_link_libraries(untitled
        Qt::Core
        Qt::Gui
        Qt::Widgets
)
#include <QApplication>
#include <QPushButton>

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    QPushButton button("Hello world!", nullptr);
    button.resize(200, 100);
    button.show();
    return QApplication::exec();
}

После сборки данного проекта, в директории cmake-build-debug помимо untitled.exe создаётся файл libuntitled.dll.a. Заметил, что он создаётся, если в команде target_link_libraries есть Qt::Widgets. Если оставить только Qt::Core и Qt::Gui, то после сборки данный файл не создаётся. На ПК (Win11 23H2 x64), где собираю проект, exe-шник запускается и без этого файла в директории, а на другом ПК (Win10 x64) при запуске возникает ошибка: This app can't run on your PC. To find a version for this PC check with software developer.

Почему данный файлик создаётся и как можно попробовать исправить данную проблему?


Ответы (1 шт):

Автор решения: Andrew Bodrov

Проблема решилась путём сборки qt компилятором, с thread model=win32 и добавлением в CMakeLists.txt строки set(CMAKE_CXX_FLAGS "-static -lpthread").

→ Ссылка