自动包含头目录Automake

时间:2018-09-13 14:07:04

标签: cmake automake libtool

我有一个具有以下目录结构的Automake项目:

Makefile.am
src/
src/common
src/common/common.c
src/common/common.h
src/common/Makefile.am
src/mylib
src/mylib/mylib.c
src/mylib/mylib.h
src/mylib/Makefile.am

src/common/Makefile.am上有一个Libtool便捷库目标:

noinst_LTLIBRARIES = libcommon.la
libcommon_la_SOURCES = common.c common.h

src/mylib/Makefile.am上有一个Libtool公共共享库目标:

lib_LTLIBRARIES = libmylib.la
libmylib_la_SOURCES = mylib.c mylib.h
libmylib_la_LIBADD = ../common/libcommon.la

现在,我希望Automake足够聪明,可以自动将指向libmylib_la_CFLAGS的目录的-I添加到common.h,因为它依赖于libcommon.la。 >

实际上是否存在启用此功能的机制(类似于CMake的INTERFACE_INCLUDE_DIRECTORIES)或可能已经包含libcommon_la_HEADERS便利库所有标头的变量(例如libcommon)? / p>

我到处都进行了研究,没有找到一种方法来代替直接向mylib CFLAGS中添加-I ../common/

1 个答案:

答案 0 :(得分:0)

  

现在,我希望Automake足够聪明,可以自动添加到   libmylib_la_CFLAGS -I指向common.h所在的目录,   因为它取决于libcommon.la。

您发现,Automake不会自动执行此操作。

  

实际上是否存在启用该功能的机制(类似于   CMake的INTERFACE_INCLUDE_DIRECTORIES)或一个变量(例如   libcommon_la_HEADERS),其中已经包含来自   libcommon便利库?

仅写出变量是唯一的机制。如果必须执行多次,则可以使用包含文件,也可以在AC_SUBST中使用configure.ac

请注意,在Automake中,通常将-I选项放入_CPPFLAGS变量之一中。并且,根据库的功能(尤其是如果它生成任何头文件),您可能还希望它同时引用源树和构建树。所以结果可能像这样:

libmylib_la_CPPFLAGS = -I$(srcdir)/../common -I../common