我有一个具有以下目录结构的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/
。
答案 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