0

mingw g++ を使用している場合、Windows 7 の Qt Creator で静的ライブラリを作成およびリンクする際に問題が発生しました。自動生成されたファイルを手動でハッキングすることで 1 つの解決策を見つけましたが、気に入りません。

次のように、アプリケーション サブプロジェクトとライブラリ サブプロジェクトを含む subdirs プロジェクトがあるとします。

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 ファイルに追加できる単一の設定/定義はありますか?これにより、名前が最終的に一致します (使用されているツール チェーンに適していることが望ましい)。このステップを実行すると、頻繁にイライラします。

4

1 に答える 1

0

私が覚えていることから、ライブラリの名前の付け方などは、使用される QMAKESPEC の一部です。MingW の場合は「win32-g++」である必要があります。

Qt Creator では、「ツール チェーン」を選択することで、プロジェクト設定を介して間接的に QMakeSpec を変更できます。

于 2012-06-28T15:13:18.543 に答える