我打算第一次使用GNU Autotools来打包我的C程序MyShell。我试过两次,但都失败了。我遵循了这个简单的教程,但我的程序不同之处以及导致问题的原因(我认为)是有1个.h
文件和5个.c
文件,而本教程只使用一个.c
文件。
这是我的程序的文件结构:
MyShell
- 自述
- src/
src/
- 命令执行器.c
- CommandReader.c
- ForkLauncher.c
- Main.c
- MyShell.h
- MyShellLoop.c
任何关于如何编写Makefile.am文件、config.ac文件等的指导都将不胜感激,或者任何关于将Autotools用于更复杂程序的更详细教程都将不胜感谢。
编辑
这些是我使用的文件:
MyShell/src/Makefile.am
bin_PROGRAMS = MyShell
MyShell_SOURCES = Main.c
MyShell/Makefile.am
SUBDIRS = src
dist_doc_DATA = README
MyShell/configure.ac
AC_INIT([MyShell], [1.0], [<my email address>])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_PROG_CC
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([
Makefile
src/Makefile
])
AC_OUTPUT
在我链接的教程中,config.ac文件有一行
AC_CONFIG_HEADERS([config.h])
我应该用MyShell.h
替换config.h
吗?
MyShell_SOURCES = Main.c
这似乎是错误的。您需要列出所有源文件,包括头文件。
我应该用
MyShell.h
替换config.h
吗?
没有。config.h
应该由configure
脚本从config.h.in
文件生成。"如何"可能相当复杂。