Я пытаюсь создать очень простой скрипт сборки с помощью Autoconf/AutoMake цепь инструмента (в основном в качестве учебного упражнения.)Autoconf/Automake генерирует пустой сделать файл
Большинство примеров, кажется, указывают, что вам нужно отдельный Makefile.am
в каждом исходном каталоге и что файл Makefile.am
в корне проекта должен содержать директиву SUBDIRS
, в которой говорится, что autoconf ищет дополнительные файлы Makefile.
Я думал, что для простого проекта может быть один Makefile.am
в корневом каталоге проекта. Тем не менее, когда я пытаюсь это сделать и запускаю сгенерированный скрипт configure
, он создает один единственный файл Makefile в корне проекта, который пуст (0 байт).
Я не совсем уверен, что я делаю неправильно здесь ,
Итак, моя структура каталогов предельно проста:
MyProject
---src
------myproject.cpp
---Makefile.am
---configure.ac
Файл configure.ac
минимален:
AC_INIT(myproject, 1.0)
AC_MSG_NOTICE([My Project])
AC_PROG_CXX
AC_LANG(C++)
AC_CHECK_HEADERS(iostream)
AC_CONFIG_SRCDIR(src/myproject.cpp)
AM_INIT_AUTOMAKE(MyProject, 1.0)
AC_OUTPUT(Makefile)
И Makefile.am
также очень просто:
bin_PROGRAMS = myproject
myproject_SOURCES = src/myproject.cpp
myproject_CPPFLAGS = --std=c++11
Я бегу :
autoconf configure.ac > configure
При запуске скрипта configure ошибок нет.
Тогда я вижу, что создается в корневой директории проекта в Makefile
:
# ls -lh | grep Make
-rw-r--r-- 1 root root 0 Nov 8 16:13 Makefile
-rw-r--r-- 1 root root 98 Nov 8 15:53 Makefile.am
-rw-r--r-- 1 root root 0 Nov 8 15:00 Makefile.in
И вы можете видеть, Makefile он генерировал совершенно пуст.
Таким образом, я, очевидно, неправильно понимаю что-то фундаментальное о том, как должен работать autoconf/automake. Что я делаю неправильно здесь?
Вы запустили 'automake'? – reinierpost