c-学习如何使用GNU Autotools来打包我的程序时遇到了麻烦



我打算第一次使用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文件生成。"如何"可能相当复杂。

最新更新