我在MinGW32下构建POCO库1.6.0,环境:Windows 7 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 没有明显的原因失败。
我错过了什么?欢迎任何建议。
答案 0 :(得分:5)
在/c/dev/poco/Foundation
的背景下,路径mingw32-make.exe
并不代表您的想法。请参阅mingw32-make.exe
是一个原生 Windows应用程序,因此肯定将不理解MSYS
特定路径,例如/c/dev/poco/Foundation
;相反,它会将其解释为&#34;和#34;,c:/c/dev/poco/Foundation
,(假设您当前的工作驱动器是c:
),我确信这不是您的意图。
您似乎确实使用MSYS
作为shell,所以为什么还要使用mingw32-make.exe
?使用make.exe
本身提供的MSYS
;它确实理解MSYS
路径。
请注意,如果从MSYS shell运行make --version
,应该看到(在撰写本文时):
$ 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
在您更新的问题中,您展示了运行make.exe
的示例,其中显然不此MSYS版本;似乎你已经放置了make.exe
的替代版本 - 甚至可能是mingw32-make.exe
本身的副本,因为输出是相同的 - 在MSYS之前的某个目录中$PATH
中的版本。您应该删除此make.exe
的非MSYS版本;调用MinGW版本mingw32-make.exe
的全部目的是避免这种冲突。当您从MSYS shell运行make
时,您需要MSYS版本,不某些mingw32-make.exe
克隆。