使用 nmake 构建 wxWidgets 3.0.0 - 在错误位置创建的目录
Posted
技术标签:
【中文标题】使用 nmake 构建 wxWidgets 3.0.0 - 在错误位置创建的目录【英文标题】:Building wxWidgets 3.0.0 with nmake - directories created in wrong places 【发布时间】:2013-11-14 15:51:32 【问题描述】:我在使用 Visual Studio Express 2010 构建 wxWidgets 3.0.0 时遇到问题。多年来,我使用 nmake 从主干构建了 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>
“Det går inte att hitta sö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 符合预期。
我不知道如何调试这个......
【问题讨论】:
【参考方案1】:我不知道这里发生了什么,我怀疑与防病毒软件有一些奇怪的交互,因为这是唯一可以解释 Windows 系统 IME 上“不可能”行为的东西。但是,您应该能够通过手动创建这些目录来构建 wxWidgets。
另外,为了进一步调试,您是否尝试过直接从命令行运行所有这些if not exist...
命令?它们至少在这种情况下有效吗?
【讨论】:
出于这个原因,我没有使用任何防病毒软件。但是问题已经找到了,当然是我的错……【参考方案2】:我找到了问题所在,和wxWidgets无关。
前段时间我想为cmd
设置一个默认的启动目录,这样我在启动终端后就不必总是做cd
。我发现了一个使用注册表 (as documented here and many other places) 的技巧,以便在启动新的终端窗口时始终执行命令 cd /D c:\home
。
但我不知道nmake
也会执行自动运行命令!所以发生的第一件事是nmake
将目录更改为c:\home
,然后尝试从那里运行,这显然失败了。
【讨论】:
以上是关于使用 nmake 构建 wxWidgets 3.0.0 - 在错误位置创建的目录的主要内容,如果未能解决你的问题,请参考以下文章