【发布时间】:2020-08-12 09:42:05
【问题描述】:
我正在将一个在 MacOS 上编译的 qt 项目移植到 Windows。我已经设法或多或少地修复了所有编译器错误,但我现在遇到了这个问题:
18 warnings generated.
/OUT:debug\editor.exe @C:\Users\User\AppData\Local\Temp\editor.exe.10472.84781.jom
The system cannot find the path specified.
jom: C:\Source\build-project-qt-Desktop_Qt_5_12_9_MSVC2017_64bit-Debug\src\Makefile.Debug [debug\editor.exe] Error 1
jom: C:\Source\build-project-qt-Desktop_Qt_5_12_9_MSVC2017_64bit-Debug\src\Makefile [debug] Error 2
jom: C:\Source\build-project-qt-Desktop_Qt_5_12_9_MSVC2017_64bit-Debug\Makefile [sub-src-make_first] Error 2
02:32:53: The process "C:\Users\User\msvc_make.bat" exited with code 2.
Error while building/deploying project project (kit: Desktop Qt 5.12.9 MSVC2017 64bit)
When executing step "Make"
我一直在寻找几个小时,但我不知道为什么没有生成它。如果不需要,我非常希望不要禁用 JOM(不是我没有尝试过,将套件中的 CMake 生成器设置为 NMake Makefiles with Codeblock 而不是 NMake Makefiles JOM with Codeblocks 只会给我同样的错误)。
编辑:这是 Makefile.debug 文件的一部分,它似乎调用了 editor.exe:
####### Build rules
first: all
all: Makefile.Debug debug\editor.exe
debug\editor.exe: C:\Source\build-project-Desktop_Qt_5_12_9_MSVC2017_64bit-Debug\src\..\lib\cocos2d\debug\cocos2d.lib C:\Qt\Qt5.12.9\5.12.9\msvc2017_64\lib\Qt5OpenGLd.lib C:\Qt\Qt5.12.9\5.12.9\msvc2017_64\lib\Qt5Widgetsd.lib C:\Qt\Qt5.12.9\5.12.9\msvc2017_64\lib\Qt5Guid.lib C:\Qt\Qt5.12.9\5.12.9\msvc2017_64\lib\Qt5Xmld.lib C:\Qt\Qt5.12.9\5.12.9\msvc2017_64\lib\Qt5Cored.lib C:\Qt\Qt5.12.9\5.12.9\msvc2017_64\lib\qtmaind.lib ui_mainwindow.h ui_setprojectpathdialog.h $(OBJECTS)
$(LIBAPP) $(LIBFLAGS) /OUT:$(DESTDIR_TARGET) @<<
[here is a list of paths to a bunch of obj files in a debug folder]
<<
这是我能找到的变量:
DESTDIR = debug\ #avoid trailing-slash linebreak
TARGET = editor.exe
DESTDIR_TARGET = debug\editor.exe
OBJECTS 是调试文件夹中的 obj 文件列表。
【问题讨论】:
-
那个前缀
/OUT:在我看来是错误的。要么应该提供一些其他缺少的程序,要么该前缀不应该存在。不幸的是,nmake 不是 make 的一个很好的实现(它甚至没有尝试成为标准并且缺乏有用的错误输出)。我认为您必须查看src\Makefile.Debug文件并尝试找到调用editor.exe的规则,然后将该规则复制/粘贴到您的问题中。否则,qmake或qt的人可能会给你一些提示。 -
@MadScientist 我完全同意。我已经更新了我的问题。这些没有提到那里的任何 jom 文件。
-
看起来 make 变量
LIBAPP和LIBFLAGS为空或未设置。LIBAPP至少需要指定一个适合构建目标的程序。 -
另外,我倾向于同意@MadScientist 的观点,即
/OUT标志看起来很可疑。从它的名字我推断它是为创建的文件指定一个目录或完整路径名,但不清楚变量DESTDIR_TARGET如何与它出现的规则的指定目标相关联。 -
我对此一无所知。我一直在寻找
LIBAPP和LIBFLAGS。在项目或 Qt 安装目录中的任何地方都没有提到LIBAPP。LIBFLAGS仅出现在QMAKE_LIBFLAGS的上下文中,并且从未真正设置为任何内容。我在哪里填写?什么?为什么还没设置好?我该如何着手处理这个问题?