使用nmake构建wxWidgets 3.0.0 - 在错误的位置创建目录

时间:2013-11-14 15:51:33

标签: visual-studio-2010 wxwidgets nmake

使用 Visual Studio Express 2010 构建 wxWidgets 3.0.0 时遇到问题。我已经使用 nmake 从trunk创建了2.9.x并且我从来没有遇到任何问题。但突然之间似乎不再创建目录了......

重现:

  • 下载wxWidgets-3.0.0.7z并将其解压缩到“c:\ home \ vs2010 \ wx30”
  • 启动Visual Studio命令提示符
  • 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符合预期。

我不知道如何调试这个......

2 个答案:

答案 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,然后尝试从那里运行,这显然会失败。