【问题标题】:How do I stop automake from adding -I. to my compile line?如何阻止 automake 添加 -I。到我的编译行?
【发布时间】:2009-11-03 21:25:38
【问题描述】:

如何阻止 automake 添加 -I.到我的编译行?

似乎 automake 或 libtool 对象总是有类似以下的编译命令:

g++ -DHAVE_CONFIG_H -I. -I./proj/otherdir -o myprog.o myprog.c

问题是我有两个同名的头文件....

./proj/otherdir/Header.h
./proj/thisdir/Header.h

每个标头都有一个名为 Header 的类,尽管每个标头位于不同的命名空间中。因此,当我在 ./proj/thisdir 中构建时,“-I”。被包括在内,我无法进入 ./proj/otherdir 中的标题

我不知道如何摆脱最初的“-I”。出现。

有什么提示吗?

谢谢 陈兹

【问题讨论】:

    标签: c++ autoconf automake libtool


    【解决方案1】:

    您所要做的就是在 Makefile.am 中设置

    DEFAULT_INCLUDES =
    

    然后世界上一切都很好。

    陈斯

    【讨论】:

      【解决方案2】:

      如果你的 API 在我编写时包含不同的标头

      #include <Header.h>
      

      这使得该 API 令人困惑且容易出错。

      为什么不定义你的 API 像

      #include <thisdir/Header.h>
      

      #include <otherdir/Header.h>
      

      然后,如果需要,您甚至可以引用同一源文件中的两个标头。您只需阅读包含行就知道它实际包含的内容。

      【讨论】:

        【解决方案3】:

        查看您应用的 configure.ac 或 configure.in,应该在其中

        【讨论】:

        • 说什么?我不明白。我会说我自己编写了configure.ac,我没有设置-I。那里的任何地方。只是为了确保我 grep 了我的 .ac 文件和我编译的配置脚本,并且没有提到“-I”。
        【解决方案4】:

        它并没有去掉 -I.,但是你可以在你的 #include 指令中放置相对路径:

        #include "../otherdir/Header.h"
        #include "../thisdir/Header.h"
        

        【讨论】:

        • 我认为相对路径看起来很草率。我总是宁愿在编译行上使用 -I 参数。不过谢谢!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-29
        • 1970-01-01
        • 2023-03-31
        • 2013-05-10
        相关资源
        最近更新 更多