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

没有编译成对应的.res文件,因为jom.exe快速返回

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 并且在第一个构建规则中它工作正常。

所以问题是,为什么不再创建文件(它适用于旧项目,项目目录中的所有源文件以及默认的“发布”和“调试”目录)。

将调试选项添加到 Qt Creator 的 Project>Build Settings for qmake (-Wall) 和 jom (VERBOSE=2) 并没有产生更多关于出错的信息。

Makefile.Debug 有一个 .res 文件的目标,其中源文件没有绝对路径,但即使我完成了路径它也不起作用。

如何从 jom 获得更多调试输出以查看是否调用了 rc.exe?

这是失败时的输出:

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's`)

解决方案:没有关于获得工具链(jom 和 qmake)的正确调试输出的更多信息,但确保路径中没有空格解决了问题:可执行文件再次嵌入了其资源信息。

于 2013-03-27T18:15:39.937 回答