2011-05-17 175 views
5

我將Xcode 3.2安裝到/Xcode3.2,並且沒有而是將任何東西安裝到/ Developer中。當我希望做開發,我開始了一個shell如下aclocal/autoconf報告在Mac OS X上缺少m4sugar.m4?

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.2SDK_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管道。此外,M4PATH環境變量,man頁面爲m4建議將讓我添加路徑似乎沒有區別。 (並設置一個環境變量將是我的首選設置,只是我可以將它添加到上面的別名。)

到目前爲止,我還沒有想出一個解決方案,而不是「髒」的程序創建從/usr/share/autoconf/Xcode3.2/usr/share/autoconf的符號鏈接。還有更好的方法嗎?

注意:我在開發人員工具和操作系統的安裝之間保持如此不同的界限的原因是爲了提供可靠的跨OS編譯(例如,使得一個Xcode版本的工具不會干擾另一個Xcode版本的構建行爲)。

回答

3

我不確定我瞭解您的設置導致autom4te找不到該文件。在/usr/bin/最初安裝後,您是否將autom4te移動到目錄Xcode3.2/?從你的問題中我不清楚(我對Xcode不熟悉,是否與autoconf綁定?)。

無論如何... autom4te尋找m4sugar.m4的位置在安裝Autoconf軟件包時在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。它需要不到半分鐘。

+0

autom4te和M4,所有這些工具都在Xcode一起安裝在安裝的那些之前卸載的autoconf(sudo port uninstall autoconf)蘋果在Mac OS X上提供的開發工具。這與通過fink或darwinports等安裝所有這些工具有關。您可以選擇讓它們在/ usr/whatever中放置有用的副本(可能是鏈接?),但它們都生活在/ Xcode3中.2-或/ Developer-前綴路徑。因此,我不負責autoconf的配置 - 這都是Apple。看起來,他們需要在將autom4te.cfg安裝到非標準位置(例如/Xcode3.2)時對其進行參數化。修復.cfg使其工作。謝謝! – 2011-05-17 19:55:27

+0

參數化autom4te.cfg路徑的建議錯誤已被提交爲rdar:// 9454686。 – 2011-05-17 20:20:14

6

爲了澄清修正爲ADL的答案並在其上Nathan的註釋中指出:

如果你有安裝在默認位置autoconf/Developer下)爲4的XCode的一部分。3,您需要編輯/Developer/usr/share/autoconf/autom4te.cfg,因爲它有各種錯誤的路徑設置在不包括/Developer目錄:

(的編輯將被示爲某種差異的,我在谷歌cachethis 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 
+0

根據xcode 6和OSX 10.9.4沒有工作,但這篇文章和以前的帖子提供了有價值的線索。有什麼工作是:brew卸載autoconf然後brew安裝autoconf給了幾條指令,然後我執行brew鏈接 - 覆蓋autoconf。在OSX 10.9.4下,沒有/ Developer/usr/share/autoconf,因爲它位於/ usr/local/Cellar/autoconf – ervinbosenbacher 2014-08-14 20:04:10

8

我解決此得到了通過創建一個新的符號鏈接

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

在Xcode4環境:

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

如果您已經使用MacPorts進行安裝,您可能會安裝autoconf,然後添加autom4te並開始搞亂您的路徑。如果像我一樣,你是從MacPorts的運動,那麼你就需要進行編輯喜歡通過Ergwun建議