C / C ++:使用automake自动添加-I选项以进行间接包含

时间:2011-04-19 20:24:04

标签: c++ g++ autotools automake

我有两个使用Automake构建的项目。以下是Automake.amS的简化版本:

AM_CPPFLAGS = -I/some/include_path
lib_LTLIBRARIES = libfoo.la
libfoo_la_SOURCES = foo.cpp
libegfconfig_la_LIBADD = -lxml2

AM_CPPFLAGS = -I/some/include_path # I want this to happen implicitly   
lib_LTLIBRARIES = libbar.la     
libbar_la_SOURCES = bar.cpp
libbar_la_LIBADD = $(top_builddir)/some/path/libfoo.la

第二个文件只需指定附加的包含路径,因为bar.cpp包含foo.hpp,其中包含来自/ some / include_path的内容。我希望第二个项目隐含地添加额外的包含路径,这是基于第一个项目这样做并且是依赖项的事实。

这可能吗?

3 个答案:

答案 0 :(得分:1)

将包含路径放入Makefile.am不是一个好主意。如果用户已在非标准位置安装了标头,则让用户通过在要配置的命令行或CONFIG_SITE中向CPPFLAGS添加适当的-I子句来告知配置。这听起来像你真正想要做的是

CPPFLAGS=-I/some/include_path

在/usr/local/share/config.site或$ CONFIG_SITE中,不包含在任一项目的Makefile.am中。

答案 1 :(得分:0)

不,这对Automake来说是不可能的。

答案 2 :(得分:0)

嗯,pkg-config通常与autotools项目一起使用

示例:

gcc -o test test.c $(pkg-config --libs --cflags libpng)