使用automake将不同项目中的一个标题添加到我的项目中

时间:2010-03-05 10:43:02

标签: c header automake multiple-projects

我正在开发一个使用automake构建系统的相对较大的项目。

现在问题是我需要将项目与来自另一个项目的库链接(这很好),但我还需要包含来自其他项目源代码树(api.h)的头文件。

INCLUDES = -I@REMOTE_PROJECT_DIR@

Makefile.am中的

不起作用,因为在远程源目录中存在具有共名的.h文件。如何只添加api.h

我在项目的include目录中使用了一个符号链接,但现在我需要将源代码推送到一个公共仓库,每个使用它的人都将另一个项目放在另一个目录中,所以我需要使用configure param。

2 个答案:

答案 0 :(得分:1)

您不想以任何方式调整Makefile.am或您的configure.ac。如果api.h安装在标准位置(例如/ usr / include),那么您在configure.ac中只需要AC_CHECK_HEADERS([api.h])。如果api.h安装在非标准位置(例如/ home / joe / include),则在配置时确定在项目中拾取它的方法。运行configure时,将参数CPPFLAGS = -I / home / joe / include添加到configure的调用中。您没有在构建文件本身中指明非标准位置。

另一种方法是使用pkg-config,但运行configure时仍会处理头文件的非标准位置。 (这次是通过设置PKG_CONFIG_PATH而不是CPPFLAGS)

答案 1 :(得分:0)

如果您的标题名称相同,则可以将其中至少一个放入具有不同名称的目录中,并使用目录名称包含它。

这是一个示例目录结构:

mylibrary/include/myblirary/api.h

myproject/api.h 
myproject/main.cpp 

在main.cpp中:

#include "api.h"
#include "mylibrary/api.h"

#include <boost/regex.hpp>

编译时:

  

g ++ -I mylibrary / include