【问题标题】:Autotools/Automake : the good way to add include pathAutotools/Automake:添加包含路径的好方法
【发布时间】:2020-03-10 14:31:54
【问题描述】:

我有一个使用自动工具在 Linux 环境下编译的 C++ 项目。 我写的所有包含路径都是相对的(例如:-I../path0/inc -I../path1/path2/inc -I../../../path3/inc)。

一切都很好,直到我决定在树构建目录中构建我的项目,因为所有目标文件都在源文件中。

当然,编译不再像我预期的那样工作了。

所以,有我的问题:

  1. 我必须在每个包含前添加自己@srcdir@ 吗? (例如:AM_CPPFLAGS = -I@srcdir@/path0/inc -I@srcdir@/../path1/inc)
  2. 或者有什么好的方法来做到这一点?

【问题讨论】:

    标签: path include autotools automake


    【解决方案1】:
    1. 我必须在每个包含前添加自己@srcdir@ 吗? (例如:AM_CPPFLAGS = -I@srcdir@/path0/inc -I@srcdir@/../path1/inc)
    2. 或者有什么好的方法来做到这一点?

    要正确支持树外构建,是的,您需要明确表示相对于源目录的包含目录。还有命令行参数中的任何其他源树路径,除了那些通过 make 表示规则先决条件的自动变量表示的路径。

    不过,我个人更喜欢使用 Automake 提供的 $srcdir 和/或 $top_srcdir 变量,而不是 Autoconf 中的 @srcdir@ 替换。

    【讨论】:

    • 我更喜欢$srcdir,主要是因为它的抽象级别更适合Makefile.am。我将此推广到所有 Autoconf 输出变量:应该使用Makefile.am 文件中的变量形式。 @-delimited 形式适用于实际模板,例如Makefile.in,但在将 Automake 与 Autoconf 一起使用的情况下,您将无法直接使用 makefile 模板。
    猜你喜欢
    • 2015-02-03
    • 2016-07-04
    • 2011-11-20
    • 2015-01-05
    • 2022-11-19
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    相关资源
    最近更新 更多