使用 Visual Studio Express 2010 构建 wxWidgets 3.0.0 时遇到问题。我已经使用 nmake 从trunk创建了2.9.x并且我从来没有遇到任何问题。但突然之间似乎不再创建目录了......
重现:
cd \home\vs2010\wx30\build\msw
nmake -f makefile.vc
这是输出:
c:\home\vs2010\wx30\build\msw>nmake -f makefile.vc
Microsoft (R) Program Maintenance Utility Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.
if not exist vc_mswud mkdir vc_mswud
if not exist ..\..\lib\vc_lib mkdir ..\..\lib\vc_lib
if not exist ..\..\lib\vc_lib\mswud mkdir ..\..\lib\vc_lib\mswud
if not exist ..\..\lib\vc_lib\mswud\wx mkdir ..\..\lib\vc_lib\mswud\wx
if not exist ..\..\lib\vc_lib\mswud\wx\setup.h copy ..\..\include\wx\msw\setup.h ..\..\lib\vc_lib\mswud\wx\setup.h
Det går inte att hitta sökvägen.
NMAKE : fatal error U1077: 'if' : return code '0x1'
Stop.
c:\home\vs2010\wx30\build\msw>
“Detgårinteatthitatsökvägen”在瑞典语中找不到“路径”。
我在构建之后检查了,如果它们实际上已经存在,那么应该创建的目录都没有。相反,它们是直接在文件系统根目录中创建的! (C:\lib\vc_lib\mswud\wx
)
我尝试在 makefile.vc 中打印当前工作目录和MAKEDIR:
clean:
chdir
echo $(MAKEDIR)
-if exist $(OBJS)\*.obj del $(OBJS)\*.obj
...
这是输出:
c:\home\vs2010\wx30\build\msw>nmake -f makefile.vc clean
Microsoft (R) Program Maintenance Utility Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.
chdir
c:\home
echo c:\home\vs2010\wx30\build\msw
c:\home\vs2010\wx30\build\msw
if exist vc_mswud\*.obj del vc_mswud\*.obj
if exist vc_mswud\*.res del vc_mswud\*.res
if exist vc_mswud\*.pch del vc_mswud\*.pch
...
由于某些原因,chdir报告c:\home
,但MAKEDIR符合预期。
我不知道如何调试这个......
答案 0 :(得分:0)
我不知道这里发生了什么,我怀疑与反病毒软件有一些奇怪的互动,因为这是唯一可以解释Windows系统IME上“不可能”行为的事情。但是,您应该能够通过手动创建这些目录来构建wxWidgets。
另外,为了进一步调试,您是否尝试直接从命令行运行所有这些if not exist...
命令?他们至少在这种情况下是否有效?
答案 1 :(得分:0)
我发现了问题,它与wxWidgets无关。
前段时间我想为cmd
设置一个默认的启动目录,以便在启动终端后我不必总是cd
。我发现使用注册表(as documented here and many other places)的一个技巧,以便在启动新的终端窗口时始终执行命令cd /D c:\home
。
但我不知道nmake
也执行了自动运行命令!所以首先发生的事情是nmake
将目录更改为c:\home
,然后尝试从那里运行,这显然会失败。