xcode aclocal/autoconf 报告在 Mac OS X 上缺少 m4sugar.m4?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/6033989/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
aclocal/autoconf reports missing m4sugar.m4 on Mac OS X?
提问by Nathan Herring
I have Xcode 3.2 installed into /Xcode3.2, and did notinstall anything into /Developer. When I wish to do development, I start up a shell as follows
我将 Xcode 3.2 安装到 /Xcode3.2 中,但没有在 /Developer 中安装任何东西。当我想做开发时,我启动一个shell如下
alias sysroot='PATH=${PATH}:${XCODE}/usr/bin CFLAGS=--sysroot\ ${SDK_ROOT} CXXFLAGS=--sysroot\ ${SDK_ROOT} LDFLAGS=--sysroot\ ${SDK_ROOT} CPPFLAGS=--sysroot\ ${SDK_ROOT}'
where XCODE
is /Xcode3.2
and SDK_ROOT
is ${XCODE}/SDKs/MacOSX10.6.sdk
. This handles most of the oddities of trying to build projects. However, I recently ran into a case where I wanted to re-run aclocal
and got the following error:
这里XCODE
是/Xcode3.2
和SDK_ROOT
是${XCODE}/SDKs/MacOSX10.6.sdk
。这处理了尝试构建项目的大多数奇怪之处。但是,我最近遇到了一个情况,我想重新运行aclocal
并收到以下错误:
autom4te: m4sugar/m4sugar.m4: no such file or directory
aclocal: /Xcode3.2/usr/bin/autom4te failed with exit status: 1
Specifying -I
flags to aclocal
to point at the alternative /Xcode3.2/usr/share/aclocal-1.10
and /Xcode3.2/usr/share/aclocal
doesn't seem to help. If I use --verbose
, and then re-run the m4
command it lists manually with an added -I
flag to point to /Xcode3.2/usr/share/autoconf
, then that works, but I cannot seem to pipe it through from aclocal
. In addition the M4PATH
environment variable that the man
pages for m4
suggest will let me add paths does not seem to make a difference. (And setting an environment variable would be my preferred setting, just so I could add it to the alias above.)
指定-I
标志以aclocal
指向替代方案/Xcode3.2/usr/share/aclocal-1.10
,/Xcode3.2/usr/share/aclocal
似乎没有帮助。如果我使用--verbose
,然后重新运行m4
它手动列出的命令,并添加一个-I
指向 的标志/Xcode3.2/usr/share/autoconf
,然后就可以了,但我似乎无法从aclocal
. 此外,建议页面让我添加路径的M4PATH
环境变量似乎没有什么区别。(并且设置环境变量将是我的首选设置,这样我就可以将其添加到上面的别名中。)man
m4
So far, I've not come up with a solution other than the "dirtying" procedure of creating a symlink from /usr/share/autoconf
to /Xcode3.2/usr/share/autoconf
. Is there another better way?
到目前为止,除了从/usr/share/autoconf
to创建符号链接的“弄脏”过程之外,我还没有想出其他解决方案/Xcode3.2/usr/share/autoconf
。还有其他更好的方法吗?
NOTE: The reason I keep such distinct lines between installs of the developer tools and the OS is to provide reliable cross-OS compilations (e.g., so that one Xcode version's tools don't perturb another Xcode version's build behavior.)
注意:我在开发人员工具和操作系统的安装之间保持如此不同的界限的原因是为了提供可靠的跨操作系统编译(例如,这样一个 Xcode 版本的工具不会干扰另一个 Xcode 版本的构建行为。)
回答by Mathew Zaleski
I got around this by creating a new symlink
我通过创建一个新的符号链接来解决这个问题
sudo ln -s /Developer/usr/share/autoconf /usr/share
回答by Ergwun
To clarify the fix as identified in adl's answer and Nathan's comment on it:
澄清 adl 的回答和 Nathan 对其的评论中确定的修复:
If you have autoconf
installed in the default location (under /Developer
) as part of XCode 4.3, you'll need to edit /Developer/usr/share/autoconf/autom4te.cfg
as it has various wrong paths set it in that don't include the /Developer
directory:
如果您已作为 XCode 4.3 的一部分autoconf
安装在默认位置(在 下/Developer
),则需要进行编辑,/Developer/usr/share/autoconf/autom4te.cfg
因为它设置了各种错误的路径,不包括/Developer
目录:
(The edits are illustrated as some kind of diff that I found in the Google cacheof this post)
*** /Developer/usr/share/autoconf/autom4te.cfg 2011-10-28 00:15:15.000000000 -0700
--- /Developer/usr/share/autoconf/autom4te.cfg 2011-10-28 00:14:33.000000000 -0700
***************
*** 99,101 ****
begin-language: "Autoconf-without-aclocal-m4"
! args: --prepend-include /usr/share/autoconf
args: --cache=autom4te.cache
--- 99,101 ----
begin-language: "Autoconf-without-aclocal-m4"
! args: --prepend-include /Developer/usr/share/autoconf
args: --cache=autom4te.cache
***************
*** 126,128 ****
begin-language: "Autotest"
! args: --prepend-include /usr/share/autoconf
args: autotest/autotest.m4f
--- 126,128 ----
begin-language: "Autotest"
! args: --prepend-include /Developer/usr/share/autoconf
args: autotest/autotest.m4f
***************
*** 140,142 ****
begin-language: "M4sh"
! args: --prepend-include /usr/share/autoconf
args: m4sugar/m4sh.m4f
--- 140,142 ----
begin-language: "M4sh"
! args: --prepend-include /Developer/usr/share/autoconf
args: m4sugar/m4sh.m4f
***************
*** 152,154 ****
begin-language: "M4sugar"
! args: --prepend-include /usr/share/autoconf
args: m4sugar/m4sugar.m4f
--- 152,154 ----
begin-language: "M4sugar"
! args: --prepend-include /Developer/usr/share/autoconf
args: m4sugar/m4sugar.m4f
回答by adl
I am not sure I understand what in your setup causes autom4te
not to find the file. Did you move autom4te
to the directory Xcode3.2/
after it was initially installed in /usr/bin/
? It's not clear to me from your question (I'm not familiar with Xcode, is that bundled with autoconf?).
我不确定我是否理解您的设置导致autom4te
找不到文件的原因。您是否在最初安装后移动autom4te
到该目录?从您的问题中我不清楚(我不熟悉 Xcode,是否与 autoconf 捆绑在一起?)。Xcode3.2/
/usr/bin/
Anyway... The location where autom4te
looks for m4sugar.m4
is hardcoded in autom4te
when the Autoconf package is installed. In fact it is even more subtle: the search path is configured in DATADIR/autom4te.cfg
, but the value of DATADIR is hardcoded into autom4te
. You can change the value of DATADIR by setting an environment variable like export AC_MACRODIR=/Xcode3.2/usr/share/autoconf
, but if you moved /usr/share/autoconf/autom4te.cfg
to /Xcode3.2/usr/share/autoconf/autom4te.cfg
, the contents of that file will still point to /usr/share/autoconf/
.
无论如何......安装Autoconf包时,autom4te
查找的位置m4sugar.m4
是硬编码的autom4te
。事实上它更微妙:搜索路径配置在 中DATADIR/autom4te.cfg
,但 DATADIR 的值被硬编码到 中autom4te
。您可以通过设置类似 的环境变量来更改 DATADIR 的值export AC_MACRODIR=/Xcode3.2/usr/share/autoconf
,但是如果您移动/usr/share/autoconf/autom4te.cfg
到/Xcode3.2/usr/share/autoconf/autom4te.cfg
,该文件的内容仍将指向/usr/share/autoconf/
.
You could have a local ~/.autom4te.cfg
to add more --prepend-include
lines, but this is crude as well. IMHO the simplest solution if you want Autoconf installed in Xcode3.2/
is to install it with ./configure --prefix /Xcode3.2 && make && make install
. It takes less half a minute.
您可以让本地人~/.autom4te.cfg
添加更多--prepend-include
线路,但这也很粗糙。恕我直言,如果要安装 Autoconf,最简单的解决方案Xcode3.2/
是使用./configure --prefix /Xcode3.2 && make && make install
. 不到半分钟。
回答by Gregory Furmanek
In the Xcode4 environment:
在Xcode4环境中:
sudo ln -s /Xcode4/usr/share/autoconf /usr/share/autoconf
回答by rolandw
If you have used MacPorts for installing much, you probably have an installation of autoconf which will then add in autom4te and start messing with your paths. If, like me, you are moving from MacPorts then you'll need to uninstall autoconf ( sudo port uninstall autoconf
) before making edits like the ones suggested by Ergwun
如果您使用 MacPorts 进行了很多安装,那么您可能已经安装了 autoconf,然后它会添加 autom4te 并开始弄乱您的路径。如果像我一样,您正在从 MacPorts 迁移,那么您需要先卸载 autoconf ( sudo port uninstall autoconf
),然后再进行像 Ergwun 建议的那样的编辑