Я слежу за https://robots.thoughtbot.com/the-magic-behind-configure-make-make-install , чтобы узнать, как использовать autoconf
и automake
для создания configure
сценарий и Makefile
.
Ниже приведено содержимое файла configure.ac
:
AC_INIT ([helloworld], [0.1], [someone@nowhere.com])
AM_INIT_AUTOMAKE
AC_PROG_CC
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
Однако, когда я запускаю команду aclocal
, я получаю следующую ошибку.
user $ aclocal
configure.ac:2: error: AC_INIT should be called with package and version arguments
/usr/share/aclocal-1.14/init.m4:29: AM_INIT_AUTOMAKE is expanded from...
configure.ac:2: the top level
autom4te: /usr/bin/m4 failed with exit status: 1
aclocal: error: echo failed with exit status: 1
user $
Я сделал поиск в Google, чтобы увидеть, была ли строка AC_INIT ([helloworld], [0.1], [someone@nowhere.com])
неправильной. Но похоже, что это правильный способ использования AC_INIT
.
Как это исправить?
Также ниже приводится содержимое файла Makefile.am
(если это связано с ошибкой):
AUTOMAKE_OPTIONS = foreign
bin_PROGRAMS = helloworld
helloworld_SOURCES = hello.c
Это, кажется, просто вопрос пробела: согласно 3.1.2 Язык Autoconf из Руководства Autoconf:
При вызове макросов, которые берут аргументы, не должно быть никакого пробела между макро-именем и открывающей скобкой.
AC_INIT ([oops], [1.0]) # incorrect AC_INIT([hello], [1.0]) # good
Таким образом, необходимо измениться
AC_INIT ([helloworld], [0.1], [someone@nowhere.com])
кому:
AC_INIT([helloworld], [0.1], [someone@nowhere.com])