mingw32-make 的目录更改错误
Directory change error with mingw32-make
我正在 MinGW32 下构建 POCO 库 1.6.0,环境:Windows7 Ultimate 32 位,shell:MSYS。成功执行./configure.
$ ./configure
Configured for MinGW
config.make 的内容:
POCO_CONFIG = MinGW
POCO_BASE = /c/dev/poco
POCO_BUILD = /c/dev/poco
POCO_PREFIX = /usr/local
POCO_FLAGS =
OMIT =
export POCO_CONFIG
export POCO_BASE
export POCO_BUILD
export POCO_PREFIX
export POCO_FLAGS
启动 mingw32-make 后我得到:
$ mingw32-make --debug -w
GNU Make 3.82
Built for i386-pc-mingw32
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Reading makefiles...
Updating goal targets....
File `poco' does not exist.
File `libexecs' does not exist.
File `Foundation-libexec' does not exist.
Must remake target `Foundation-libexec'.
Invoking recipe from Makefile:69 to update target `Foundation-libexec'.
mingw32-make: Entering directory `c:/dev/poco'
C:/app/MinGW/bin/mingw32-make -d -C /c/dev/poco/Foundation
GNU Make 3.82
Built for i386-pc-mingw32
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
mingw32-make: Entering an unknown directory
mingw32-make: *** /c/dev/poco/Foundation: No such file or directory. Stop.
mingw32-make: Leaving an unknown directory
mingw32-make: *** [Foundation-libexec] Error 2
mingw32-make: Leaving directory `c:/dev/poco'
问题在
mingw32-make: Entering an unknown directory
mingw32-make: *** /c/dev/poco/Foundation: No such file or directory. Stop.
因为/c/dev/poco/Foundation确实存在:
$ ls
CHANGELOG LICENSE VERSION build_vs110.cmd config.make
CMakeLists.txt MANIFEST XML build_vs120.cmd configure
CONTRIBUTORS Makefile build build_vs90.cmd contrib
CppUnit NEWS build_CE_vs90.cmd buildwin.cmd doc
DLLVersion.rc Net build_vcexpress2008.cmd cmake libversion
Foundation README build_vcexpress2010.cmd components patches
JSON Util build_vs100.cmd config.build
我正在修改 makefile 以将目录更改为其他子文件夹,不开心。似乎有什么东西阻止 mingw32-make 更改目录。也可以确认
cd /c/dev/poco/Foundation
工作正常。
用make试过,结果是一样的:
$ make --debug -w
GNU Make 3.82
Built for i386-pc-mingw32
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Reading makefiles...
Updating goal targets....
File `poco' does not exist.
File `libexecs' does not exist.
File `Foundation-libexec' does not exist.
Must remake target `Foundation-libexec'.
Invoking recipe from Makefile:69 to update target `Foundation-libexec'.
make: Entering directory `c:/dev/poco'
C:/app/MinGW/msys/1.0/bin/make -d -C /c/dev/poco/Foundation
GNU Make 3.82
Built for i386-pc-mingw32
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
make: Entering an unknown directory
make: *** /c/dev/poco/Foundation: No such file or directory. Stop.
make: Leaving an unknown directory
make: *** [Foundation-libexec] Error 2
make: Leaving directory `c:/dev/poco'
没有明显的原因导致 mingw32-make 失败,因为路径没有空格。
我错过了什么?欢迎提出任何建议。
在 mingw32-make.exe
的上下文中,路径 /c/dev/poco/Foundation
并不代表您所想的那样。看,mingw32-make.exe
是一个 native Windows 应用程序,所以它 肯定 不会 了解 MSYS
特定路径,例如 /c/dev/poco/Foundation
;相反,它将 "as is" 解释为 c:/c/dev/poco/Foundation
(假设您当前的工作驱动器是 c:
),我确定这不是您想要的。
您似乎确实在使用 MSYS
作为您的 shell,那您为什么还要使用 mingw32-make.exe
?使用MSYS
本身提供的make.exe
;它确实理解 MSYS
路径。
请注意,如果您 运行 make --version
从 MSYS shell,您 应该 看到,(在撰写本文时):
$ make --version
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for i686-pc-msys
在您更新的问题中,您展示了一个 运行ning make.exe
的示例,显然 不是 这个 MSYS 版本;看起来 you 已经放置了 make.exe
的替代版本——甚至可能是 mingw32-make.exe
本身的副本,因为输出是相同的——在某个目录中在您的 $PATH
中先于 MSYS 版本。您应该删除 make.exe
的这个非 MSYS 版本;调用 MinGW 版本 mingw32-make.exe
的全部目的就是避免这种冲突。当您从 MSYS shell 运行 make
时,您需要 MSYS 版本,并且 而不是 某些 mingw32-make.exe
克隆。
我正在 MinGW32 下构建 POCO 库 1.6.0,环境:Windows7 Ultimate 32 位,shell:MSYS。成功执行./configure.
$ ./configure
Configured for MinGW
config.make 的内容:
POCO_CONFIG = MinGW
POCO_BASE = /c/dev/poco
POCO_BUILD = /c/dev/poco
POCO_PREFIX = /usr/local
POCO_FLAGS =
OMIT =
export POCO_CONFIG
export POCO_BASE
export POCO_BUILD
export POCO_PREFIX
export POCO_FLAGS
启动 mingw32-make 后我得到:
$ mingw32-make --debug -w
GNU Make 3.82
Built for i386-pc-mingw32
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Reading makefiles...
Updating goal targets....
File `poco' does not exist.
File `libexecs' does not exist.
File `Foundation-libexec' does not exist.
Must remake target `Foundation-libexec'.
Invoking recipe from Makefile:69 to update target `Foundation-libexec'.
mingw32-make: Entering directory `c:/dev/poco'
C:/app/MinGW/bin/mingw32-make -d -C /c/dev/poco/Foundation
GNU Make 3.82
Built for i386-pc-mingw32
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
mingw32-make: Entering an unknown directory
mingw32-make: *** /c/dev/poco/Foundation: No such file or directory. Stop.
mingw32-make: Leaving an unknown directory
mingw32-make: *** [Foundation-libexec] Error 2
mingw32-make: Leaving directory `c:/dev/poco'
问题在
mingw32-make: Entering an unknown directory
mingw32-make: *** /c/dev/poco/Foundation: No such file or directory. Stop.
因为/c/dev/poco/Foundation确实存在:
$ ls
CHANGELOG LICENSE VERSION build_vs110.cmd config.make
CMakeLists.txt MANIFEST XML build_vs120.cmd configure
CONTRIBUTORS Makefile build build_vs90.cmd contrib
CppUnit NEWS build_CE_vs90.cmd buildwin.cmd doc
DLLVersion.rc Net build_vcexpress2008.cmd cmake libversion
Foundation README build_vcexpress2010.cmd components patches
JSON Util build_vs100.cmd config.build
我正在修改 makefile 以将目录更改为其他子文件夹,不开心。似乎有什么东西阻止 mingw32-make 更改目录。也可以确认
cd /c/dev/poco/Foundation
工作正常。
用make试过,结果是一样的:
$ make --debug -w
GNU Make 3.82
Built for i386-pc-mingw32
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Reading makefiles...
Updating goal targets....
File `poco' does not exist.
File `libexecs' does not exist.
File `Foundation-libexec' does not exist.
Must remake target `Foundation-libexec'.
Invoking recipe from Makefile:69 to update target `Foundation-libexec'.
make: Entering directory `c:/dev/poco'
C:/app/MinGW/msys/1.0/bin/make -d -C /c/dev/poco/Foundation
GNU Make 3.82
Built for i386-pc-mingw32
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
make: Entering an unknown directory
make: *** /c/dev/poco/Foundation: No such file or directory. Stop.
make: Leaving an unknown directory
make: *** [Foundation-libexec] Error 2
make: Leaving directory `c:/dev/poco'
没有明显的原因导致 mingw32-make 失败,因为路径没有空格。
我错过了什么?欢迎提出任何建议。
在 mingw32-make.exe
的上下文中,路径 /c/dev/poco/Foundation
并不代表您所想的那样。看,mingw32-make.exe
是一个 native Windows 应用程序,所以它 肯定 不会 了解 MSYS
特定路径,例如 /c/dev/poco/Foundation
;相反,它将 "as is" 解释为 c:/c/dev/poco/Foundation
(假设您当前的工作驱动器是 c:
),我确定这不是您想要的。
您似乎确实在使用 MSYS
作为您的 shell,那您为什么还要使用 mingw32-make.exe
?使用MSYS
本身提供的make.exe
;它确实理解 MSYS
路径。
请注意,如果您 运行 make --version
从 MSYS shell,您 应该 看到,(在撰写本文时):
$ make --version
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for i686-pc-msys
在您更新的问题中,您展示了一个 运行ning make.exe
的示例,显然 不是 这个 MSYS 版本;看起来 you 已经放置了 make.exe
的替代版本——甚至可能是 mingw32-make.exe
本身的副本,因为输出是相同的——在某个目录中在您的 $PATH
中先于 MSYS 版本。您应该删除 make.exe
的这个非 MSYS 版本;调用 MinGW 版本 mingw32-make.exe
的全部目的就是避免这种冲突。当您从 MSYS shell 运行 make
时,您需要 MSYS 版本,并且 而不是 某些 mingw32-make.exe
克隆。