使Qt Creator生成适当的.pro文件,以便在Windows上包含g ++静态库

时间:2012-06-26 07:58:51

标签: g++ qt-creator static-linking qmake

在使用mingw g ++时,我在Windows 7的Qt Creator中创建和链接静态库时遇到了问题。我通过手动黑客攻击自动生成的文件找到了一个解决方案,但我不喜欢它。

假设您有一个包含应用程序子项目和库子项目的子项目,如下所示。

parent.pro

TEMPLATE = subdirs
SUBDIRS += \
    utilities \
    program

utilities.pro

CONFIG += staticlib
TARGET = utilities
TEMPLATE = lib
HEADERS += ...
SOURCES += ...

program.pro

TEMPLATE = app
INCLUDEPATH += ../utilities/
HEADERS += ...
SOURCES += ...

如果您使用Qt Creator内置功能将内部库添加到应用程序,它会在应用程序的.pro文件中生成以下行:

win32:CONFIG(release, debug|release): LIBS += \
    -L$$OUT_PWD/../utilities/release/ -lutilities
else:win32:CONFIG(debug, debug|release): LIBS += \
    -L$$OUT_PWD/../utilities/debug/ -lutilities
else:symbian: LIBS += \
    -lutilities
else:unix: LIBS += \
    -L$$OUT_PWD/../utilities/ -lutilities

INCLUDEPATH += $$PWD/../utilities
DEPENDPATH += $$PWD/../utilities

win32:CONFIG(release, debug|release): PRE_TARGETDEPS += \
    $$OUT_PWD/../utilities/release/utilities.lib
else:win32:CONFIG(debug, debug|release): PRE_TARGETDEPS += \
    $$OUT_PWD/../utilities/debug/utilities.lib
else:unix:!symbian: PRE_TARGETDEPS += \
    $$OUT_PWD/../utilities/libutilities.a

这是非常有用的,除了它似乎假设名称不与自动生成的名称相关联。我的黑客是要通过并将最后一段改为......

win32:CONFIG(release, debug|release): PRE_TARGETDEPS += \
    $$OUT_PWD/../utils/release/libutils.a
else:win32:CONFIG(debug, debug|release): PRE_TARGETDEPS += \
    $$OUT_PWD/../utils/debug/libutils.a
else:unix:!symbian: PRE_TARGETDEPS += \
    $$OUT_PWD/../utils/libutils.a

...所以它匹配g ++生成的库名。

是否有一个设置/定义可以添加到库或应用程序.pro文件中,以便名称最终匹配(并且最好适合所使用的工具链)?执行此步骤经常受到刺激。

1 个答案:

答案 0 :(得分:0)

从我记忆中来看,库是名称的方式是QMAKESPEC的一部分。因为MingW应该是“win32-g ++”。

在Qt Creator中,您可以通过选择“工具链”间接通过项目设置更改QMakeSpec。