1

ソースファイルをサブディレクトリに再編成し、出力を次のように指示した後

CONFIG( debug, debug|release ) {
DESTDIR = $$PWD/build/debug
} else {
DESTDIR = $$PWD/build/release
}
OBJECTS_DIR = $$DESTDIR/.obj
MOC_DIR = $$DESTDIR/.moc
RCC_DIR = $$DESTDIR/.qrc
UI_DIR = $$DESTDIR/.ui

に含まれているリソースファイルのようです

RC_FILE += res/projectname.rc

jom.exe がすぐに戻るため、対応する .res ファイルにコンパイルされません。

C:\QtSDK\QtCreator\bin\jom.exe -f Makefile.Debug
Error: dependent '"c:\path\to\projectname\build\debug\.obj\projectname.res"' does not exist.

ファイルは実際には存在しません。

「C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\RC.exe /r projectname.rc」を手動で実行し、結果の .res ファイルを LIBS の Makefile.Debug で指定されたフォルダーにコピーし、 RES_FILE であり、最初のビルド ルールの 1 つで問題なく動作します。

問題は、なぜファイルがもう作成されないのかということです (プロジェクト ディレクトリとデフォルトの「リリース」および「デバッグ」ディレクトリにすべてのソース ファイルがある古いプロジェクトで動作します)。

Qt Creator のプロジェクト > qmake (-Wall) および jom (VERBOSE=2) のビルド設定にデバッグ オプションを追加しても、問題の原因に関する詳細情報は得られませんでした。

Makefile.Debug には .res ファイルのターゲットがあり、ソース ファイルには絶対パスがありませんが、パスを完成させても機能しません。

rc.exe が呼び出されているかどうかを確認するために、jom からさらにデバッグ出力を取得するにはどうすればよいですか?

失敗したときの出力は次のとおりです。

18:39:45: The process "c:\qtsdk\desktop\qt\4.8.1\msvc2010\bin\qmake.exe" exited normally.
18:39:45: Starting: "C:\QtSDK\QtCreator\bin\jom.exe" VERBOSE=2
C:\QtSDK\QtCreator\bin\jom.exe -f Makefile.Debug
Error: dependent '"c:\path\to\projectname\build\debug\.obj\projectname.res"' does not exist.
jom 1.0.8 - empower your cores

jom: c:\path\to\projectname\Makefile [debug] Error 2
18:39:46: The process "C:\QtSDK\QtCreator\bin\jom.exe" exited with code 2.
Error while building project projectname (target: Desktop)
When executing build step 'Make'

また、SDK のパスをシステム変数に追加しました。VS C++ 2010 Express を使用してコンパイルしています。

4

1 に答える 1

1

考えられる原因:ビルド ディレクトリを再定義すると、ツールがスペースを含む絶対パスを使用するようになり、プログラム呼び出しが失敗したようです (ただし、rc.exe の `)

解決策: ツールチェーン (jom および qmake) の適切なデバッグ出力の取得に関する詳細情報はありませんが、パスにスペースが含まれていないことを確認することで問題が解決しました: 実行可能ファイルにリソース情報が再度埋め込まれています..

于 2013-03-27T18:15:39.937 に答える