代码之家  ›  专栏  ›  技术社区  ›  Å imon Tóth

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

  •  0
  • Å imon Tóth  · 技术社区  · 14 年前

    我正在研究一个使用自动生成系统的相对较大的项目。

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

    INCLUDES = -I@REMOTE_PROJECT_DIR@

    在makefile.am中不起作用,因为在远程源目录中有.h文件具有共同的名称。我怎样才能加上 API ?

    我在项目中的include目录中使用了一个symlink,但是现在我需要将源推送到一个公共repo中,并且与之合作的每个人都将另一个项目放在不同的目录中,所以我需要使用configure param。

    2 回复  |  直到 14 年前
        1
  •  1
  •   William Pursell    14 年前

    您不想以任何方式调整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_路径而不是cppflags)

        2
  •  0
  •   Dmitry Yudakov    14 年前

    如果有同名的头文件,则可以将其中至少一个头文件放入具有不同名称的目录中,并使用目录名将其包含在内。

    下面是一个示例目录结构:

    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我的库/包括