aclocal / autoconf сообщает об отсутствии m4sugar.m4 в Mac OS X? - PullRequest
5 голосов
/ 17 мая 2011

Я установил 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 , Кроме того, переменная окружения M4PATH, которую предлагают man страницы для m4, позволит мне добавлять пути, похоже, не имеет значения. (И установка переменной среды была бы моей предпочтительной настройкой, просто чтобы я мог добавить ее к псевдониму выше.)

До сих пор я не придумал иного решения, кроме «грязной» процедуры создания символической ссылки от /usr/share/autoconf до /Xcode3.2/usr/share/autoconf. Есть ли другой лучший способ?

ПРИМЕЧАНИЕ. Причина, по которой я придерживаюсь таких четких граней между установками инструментов разработчика и ОС, заключается в том, чтобы предоставлять надежные кросс-ОС-компиляции (например, чтобы инструменты одной версии Xcode не нарушали поведение сборки другой версии Xcode.)

Ответы [ 5 ]

8 голосов
/ 04 мая 2012

Я справился с этим, создав новую символическую ссылку

sudo ln -s  /Developer/usr/share/autoconf /usr/share
6 голосов
/ 16 марта 2012

Чтобы уточнить исправление, указанное в ответе adl и комментарии Натана к нему:

Если у вас установлен autoconf в местоположении по умолчанию (под /Developer) как часть XCode 4.3, вам нужно будет отредактировать /Developer/usr/share/autoconf/autom4te.cfg, так как он содержит различные неправильные пути, которые не включают /Developer каталог:

(правки показаны в виде различий, которые я нашел в кеше Google из этого поста )

*** /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
3 голосов
/ 17 мая 2011

Я не уверен, что понимаю, что в вашей настройке заставляет autom4te не найти файл.Вы переместили autom4te в каталог Xcode3.2/ после его первоначальной установки в /usr/bin/?Мне не понятно из вашего вопроса (я не знаком с XCode, это связано с autoconf?).

В любом случае ... Место, где autom4te ищет m4sugar.m4, жестко закодировано в autom4te когда установлен пакет Autoconf.На самом деле это еще тоньше: путь поиска настроен в 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/.

Вы можетеесть местный ~/.autom4te.cfg, чтобы добавить --prepend-include строк, но это также грубо.ИМХО самое простое решение, если вы хотите, чтобы Autoconf был установлен в Xcode3.2/, это установить его с ./configure --prefix /Xcode3.2 && make && make install.Это займет меньше получаса.

1 голос
/ 05 июля 2012

В среде Xcode4:

sudo ln -s /Xcode4/usr/share/autoconf /usr/share/autoconf
0 голосов
/ 29 августа 2017

Если вы много использовали MacPorts для установки, у вас, вероятно, есть установка autoconf, которая затем добавит autom4te и начнет портить ваши пути. Если, как и я, вы переходите с MacPorts, вам необходимо удалить autoconf (sudo port uninstall autoconf), прежде чем вносить изменения, подобные тем, которые предлагает Ergwun

...