Mingw32无法静态链接到libgcc_s_dw2-1,libstdc ++-6,libwinpthread-1(Qt 5.7.1)

问题描述 投票:1回答:1

我在使用mingw32进行编译时遇到与libgcc_s_dw2-1,libstdc ++-6,libwinpthread-1库静态链接的问题。如果我构建一个独立的应用程序,则使用-static-libgcc -static-libstdc++ -static -lwinpthread标志设置项目会有所帮助。但是,当我将Qt 5.7.1用于mingw32编译器时,它没有帮助。该应用程序不会开始抱怨这些库丢失!

这是我的CMakeLists.txt

cmake_minimum_required(VERSION 3.12 FATAL_ERROR)

project(dummyapp LANGUAGES CXX)

find_package(Qt5 REQUIRED COMPONENTS Core)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libgcc -static-libstdc++ -static -lwinpthread")

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)

add_executable(app
        app.cpp)

target_link_libraries(app
        PRIVATE
            Qt5::Core
        )

add_custom_command(TARGET app PRE_LINK
        COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:Qt5::Core> $<TARGET_FILE_DIR:app>
        )

app.cpp

#include <iostream>
#include <QVariant>

int main(int argc, const char **argv)
{
    std::cout << "Hello dummy!" << std::endl;

    QVariant var{};

    std::cin.get();

    return 0;
}

我怀疑,这种现象的原因是Qt本身是动态链接到那些库的。

解决方案是什么?有补救办法吗?如果没有,如何在构建时自动部署这些库?

c++ cmake qt5 mingw
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.