Xcode aclocal/autoconf报告Mac OS X上缺少m4sugar.m4?

Xcode aclocal/autoconf报告Mac OS X上缺少m4sugar.m4?,xcode,autoconf,m4,Xcode,Autoconf,M4,我已经在/Xcode3.2中安装了Xcode 3.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}' 其中X

我已经在/Xcode3.2中安装了Xcode 3.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}'
其中
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
-I
标志指定为
aclocal
以指向备选
/Xcode3.2/usr/share/aclocal-1.10
/Xcode3.2/usr/share/aclocal
似乎没有帮助。如果我使用
--verbose
,然后重新运行
m4
命令,它会使用添加的
-I
标志手动列出,指向
/Xcode3.2/usr/share/autoconf
,那么这就行得通了,但我似乎无法从
aclocal
将其导入。此外,
m4
man
页面所建议的
M4PATH
环境变量将允许我添加路径,这似乎没有什么区别。(设置环境变量是我的首选设置,这样我就可以将其添加到上面的别名中。)

到目前为止,除了创建从
/usr/share/autoconf
/Xcode3.2/usr/share/autoconf
的符号链接的“弄脏”过程之外,我还没有找到其他解决方案。还有更好的办法吗


注意:我之所以在开发人员工具和操作系统的安装之间保持如此明显的界线,是为了提供可靠的跨操作系统编译(例如,这样一个Xcode版本的工具不会干扰另一个Xcode版本的构建行为)。

我不确定我是否理解您的设置中导致
autom4te
找不到文件的原因。最初安装在
/usr/bin/
中后,是否将
autom4te
移动到目录
Xcode3.2/
?从你的问题中我不清楚(我不熟悉Xcode,它是否与autoconf捆绑在一起?)

无论如何。。。安装Autoconf软件包时,
autom4te
查找
m4的位置。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//autoconf>


您可以使用一个本地的
~/.autom4te.cfg
来添加更多的
--prepend include
行,但这也是粗糙的。如果要在
Xcode3.2/
中安装Autoconf,最简单的解决方案是使用
/configure--prefix/Xcode3.2&&make&&make install
安装它。不到半分钟。

要澄清adl的答案和Nathan的评论中确定的修复:

如果您在默认位置(在
/Developer
下)安装了
autoconf
,作为XCode 4.3的一部分,您需要编辑
/Developer/usr/share/autoconf/autom4te.cfg
,因为它设置了各种错误路径,其中不包括
/Developer
目录:

(我在Google of中找到了一些不同的编辑)


我通过创建一个新的符号链接来解决这个问题

sudo ln -s  /Developer/usr/share/autoconf /usr/share

在Xcode4环境中:

sudo ln -s /Xcode4/usr/share/autoconf /usr/share/autoconf

如果您经常使用MacPorts进行安装,您可能已经安装了autoconf,它将添加autom4te并开始扰乱您的路径。如果您像我一样从MacPorts迁移,则需要卸载autoconf(
sudo port卸载autoconf
)在像Ergwun建议的那样进行编辑之前,当您在Mac OS X上安装苹果提供的开发工具时,autom4te和m4以及所有这些工具都与Xcode一起安装。这与通过fink或darwinports等安装所有工具相比。您可以选择让它们在/usr/中放置有用的副本(可能是链接?),但它们都位于/Xcode3.2或/Developer前缀路径中。因此,我不负责autoconf的配置——它完全是苹果的。在非标准位置(例如/Xcode3.2)安装autom4te.cfg时,似乎需要对其进行参数化。解决这个问题。cfg使它工作。谢谢参数化其autom4te.cfg路径的建议错误已归档为rdar://9454686.Under xcode 6和OSX 10.9.4不起作用,但这篇文章和以前的文章提供了有价值的线索。所做的工作是:brew卸载autoconf,然后brew安装autoconf,它给出了一些说明,然后我执行了brew链接——覆盖autoconf。在OSX 10.9.4下没有/Developer/usr/share/autoconf,因为它位于/usr/local/cillar/autoconf下
sudo ln -s /Xcode4/usr/share/autoconf /usr/share/autoconf