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