我有一个 C 应用程序,我正在将一组手工编码的 Makefile 转换为 GNU AutoMake。它有一个子目录,其中包含一个接口头和几个平台相关的实现。当前,选择一个实现并将其构建到该目录中具有固定名称的目标文件。然后使用驱动程序接口的代码链接到该目标文件并自动获取正确的驱动程序。
将此系统转换为使用 AutoTools 的最佳方法是什么?我已经让 AutoConf 为正确的驱动程序实现文件创建了一个替换。我只是不知道如何获得一个 AutoMake 目标,我可以将实现文件放入其EXTRA_*_SOURCES
和*_LDADD
变量中。我是否只需要放弃中间目标文件并将它们放入使用它们的程序目标的列表中?
编辑:感谢 ptomato 解决。
由于 Automake 的依赖解析,所有可能的源都必须在*_SOURCES
和中命名EXTRA_*_SOURCES
,如手册的条件源部分所述。因此,图书馆节实际上是:
noinst_LIBRARIES = libdriver.a
libdriver_a_SOURCES = driver.h
EXTRA_libdriver_a_SOURCES = driver-linux.c driver-windows.c driver-osx.c
libdriver_a_LIBADD = @DRIVERIMPL@