gpt4 book ai didi

makefile - mingw32-make 的目录更改错误

转载 作者:行者123 更新时间:2023-12-02 01:58:30 29 4
gpt4 key购买 nike

我正在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 没有明显的原因失败。

我错过了什么?欢迎任何建议。

最佳答案

mingw32-make.exe 的上下文中,路径 /c/dev/poco/Foundation 并不意味着您所想的那样。看,mingw32-make.exe 是一个 native Windows 应用程序,因此它肯定不会理解 >MSYS具体路径如/c/dev/poco/Foundation;相反,它将“按原样”解释为 c:/c/dev/poco/Foundation(假设您当前的工作驱动器是 c:),我我确信这不是您想要的。

您似乎确实使用 MSYS 作为 shell,那么为什么还要使用 mingw32-make.exe 呢?使用MSYS本身提供的make.exe;它确实理解 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本身的副本,用于输出是相同的——在 $PATH 中 MSYS 版本之前的某个目录中。您应该删除这个非 MSYS 版本的 make.exe;调用 MinGW 版本 mingw32-make.exe 的全部目的就是为了避免这种冲突。当您从 MSYS shell 运行 make 时,您需要 MSYS 版本,而不是某些 mingw32-make.exe 克隆。

关于makefile - mingw32-make 的目录更改错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31293526/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com