Autoconf: проверьте, компилируется ли программа на неподдерживаемом языке - PullRequest
1 голос
/ 03 декабря 2010

Чтобы условно включить часть проекта с автозагрузкой, мне нужно проверить, компилируется или нет короткая программная заглушка на языке, не поддерживаемом автоинструментами из коробки.

Мне нужно что-то вроде AC_TRY_COMPILEс произвольным исполняемым файлом компилятора - создайте временный файл, запишите в него фрагмент кода и попробуйте, если при вызове компилятора (найденного с помощью AC_CHECK_PROGS ранее) возвращается код завершения, равный нулю или нет.

Чтосамый элегантный / распространенный способ сделать это?

Ответы [ 2 ]

3 голосов
/ 14 декабря 2010

AC_TRY_COMPILE (который устарел и заменен на AC_COMPILE_IFELSE) поддерживает только ограниченный набор языков: C, C ++, Fortran 77, Fortran, Erlang, Objective C, Objective C ++ ( source ).

configure.ac может содержать пользовательский код оболочки - он просто пропускается на autoconf (на самом деле m4).Почему бы просто не написать свой тест в оболочке?Если вы собираетесь использовать более одного теста, оберните его в AC_DEFUN.

0 голосов
/ 25 декабря 2010

Чтобы включить необязательную часть проекта с автоматической настройкой, вы должны использовать опцию --enable-something. Не делайте это зависимым от того, что в данный момент доступно в среде сборки. Это склонно маскировать ошибки в автоматических сборках. (Пример: известно, что дистрибутивы Linux поставляют поврежденные пакеты из-за отсутствующих зависимостей сборки или другой проблемы в среде, где повышение ошибки было бы более полезным, чем выполнение без вывода сообщений).

...