首页 文章

在qmake中自动复制DLL将不起作用

提问于
浏览
4

我正在尝试让qmake自动将我的程序的DLL复制到目标路径,但它不起作用 . 这是我的.pro文件的相关部分:

QT_DIR = C:/Qt/5.1.1/mingw48_32/bin
MY_TARGET_DIR = $$PWD/debug
MY_LIB_FILES += QT_DIR/QT5CORED.DLL
MY_LIB_FILES += QT_DIR/QT5SERIALPORTD.DLL
MY_LIB_FILES += QT_DIR/QT5WIDGETSD.DLL
MY_LIB_FILES += QT_DIR/LIBGCC_S_DW2-1.DLL
MY_LIB_FILES += QT_DIR/LIBWINPTHREAD-1.DLL
MY_LIB_FILES += QT_DIR/LIBSTDC++-6.DLL
MY_LIB_FILES += C:/qwt-6.1.0/lib/QWTD.DLL
extra_libs.files = MY_LIB_FILES
extra_libs.path = MY_TARGET_DIR
INSTALLS += extra_libs

QMake正常运行,但make install会发出警告

Nothing to be done for 'install'.

DLL不会复制到目标目录 . 此外,我试图更优雅地编写代码,但似乎有些QMake变量如$$ QMAKE_LIBDIR为空 . 我究竟做错了什么?

这是Qt 5.1.1中的qmake .

1 回答

  • 0

    您需要在 QT_DIR 变量前加上双倍的美元才能使其工作:

    QT_DIR = C:/Qt/5.1.1/mingw48_32/bin
    MY_TARGET_DIR = $${PWD}/debug
    MY_LIB_FILES += $${QT_DIR}/QT5CORED.DLL
    MY_LIB_FILES += $${QT_DIR}/QT5SERIALPORTD.DLL
    MY_LIB_FILES += $${QT_DIR}/QT5WIDGETSD.DLL
    MY_LIB_FILES += $${QT_DIR}/LIBGCC_S_DW2-1.DLL
    MY_LIB_FILES += $${QT_DIR}/LIBWINPTHREAD-1.DLL
    MY_LIB_FILES += $${QT_DIR}/LIBSTDC++-6.DLL
    MY_LIB_FILES += C:/qwt-6.1.0/lib/QWTD.DLL
    extra_libs.files = MY_LIB_FILES
    extra_libs.path = MY_TARGET_DIR
    INSTALLS += extra_libs
    

    Side Note:a bug in qmake导致在Windows上安装期间不会复制包含特殊字符的文件(如 libstdc++-6.dll 名称中的 + ) . 检查my comment in the bug report以获得解决方法 .

相关问题