我将 Xcode 3.2 安装到/Xcode3.2 中,但没有在/Developer 中安装任何东西。当我想做开发时,我启动一个外壳,如下所示
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 版本的构建行为。
我通过创建一个新的符号链接来解决这个问题
sudo ln -s /Developer/usr/share/autoconf /usr/share
澄清 adl 的回答和 Nathan 对此的评论中确定的修复:
如果作为 XCode 4.3 的一部分,autoconf
安装在默认位置(在 /Developer
下),则需要编辑/Developer/usr/share/autoconf/autom4te.cfg
,因为它设置了各种错误的路径,其中不包括/Developer
目录:
(编辑说明为我在这篇文章的谷歌缓存中找到的某种差异)
*** /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
我不确定我是否了解您的设置中导致autom4te
找不到该文件的原因。 您是否在最初在 /usr/bin/
中安装目录后Xcode3.2/
autom4te
将其移动到目录?我不清楚你的问题(我不熟悉 Xcode,它是否与自动确认捆绑在一起?
无论如何。。。安装 Autoconf 软件包时,autom4te
查找m4sugar.m4
的位置以 autom4te
进行硬编码。 事实上它更加微妙:搜索路径是在DATADIR/autom4te.cfg
中配置的,但 DATADIR 的值被硬编码成 autom4te
。 您可以通过设置环境变量(如 export AC_MACRODIR=/Xcode3.2/usr/share/autoconf
)来更改 DATADIR 的值,但如果将/usr/share/autoconf/autom4te.cfg
移动到 /Xcode3.2/usr/share/autoconf/autom4te.cfg
,该文件的内容仍将指向 /usr/share/autoconf/
。
您可以有一个本地~/.autom4te.cfg
来添加更多--prepend-include
行,但这也很粗糙。 恕我直言,如果您希望在Xcode3.2/
中安装 Autoconf,最简单的解决方案是使用 ./configure --prefix /Xcode3.2 && make && make install
安装它。 只需不到半分钟。
在 Xcode4 环境中:
sudo ln -s /Xcode4/usr/share/autoconf /usr/share/autoconf
如果您已经使用MacPorts进行了很多安装,则可能已经安装了autoconf,然后它将添加autom4te并开始弄乱您的路径。如果像我一样,您要从MacPorts迁移,那么您需要卸载autoconf(sudo port uninstall autoconf
),然后再进行Ergwun建议的编辑