【问题标题】:How to get --prefix value passed to Autotools configure script in C code?如何在 C 代码中获取传递给 Autotools 配置脚本的 --prefix 值?
【发布时间】:2013-02-01 21:17:24
【问题描述】:

我想知道如何在我的 c 源代码中获取传递给配置脚本(自动工具)的 --prefix 和 --exec-prefix 值?

例如,如果我使用 autotools 在 linux 中构建一个包,我会这样做:

./configure --prefix=/usr/local/apps --exec-prefix=/usr/local/apps &&
make &&
make install

并且应用程序使用的所有文件都根据该值安装。

例如,在我的打开文件的应用程序中,我需要知道该值才能知道图像的安装位置然后打开它。

我可以硬编码该值,但我不想这样做,因为我只能在那里安装应用程序。

我怎么知道这些值?

我正在使用 Anjuta。

提前感谢您的帮助。

【问题讨论】:

    标签: c linux autotools anjuta


    【解决方案1】:

    通常的做法是通过AC_DEFINEconfig.h 中定义预处理器的值,或者在AM_CPPFLAGS 中作为标志。例如在 Makefile.am 中:

    AM_CPPFLAGS = -DPREFIX="\"$(prefix)\""
    

    这允许代码包含 printf( "prefix = %s\n", PREFIX ) 之类的内容 请记住,源代码中字符串的值不会反映DESTDIR 的任何值,因此如果用户进行分阶段安装,可能无法正常工作。

    【讨论】:

    • 通过 AM_CPPFLAGS 的解决方案效果很好。非常感谢你的帮助!!!我在想永远不会在网上找到答案。所有的搜索都给了我很多相关的结果,但没有答案。现在我知道如何优化我的搜索了。我只需要稍微调整一下斜线: AM_CPPFLAGS = -DPREFIX=\""$(prefix)"\" 我之前所说的非常有用,非常感谢。现在是我学习如何使用 AC_DEFINE 的时候了;)
    • @JohnSmith 如果答案对您有用,您可能想“接受”它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 2011-02-23
    • 2011-07-03
    • 2019-12-20
    • 1970-01-01
    • 2023-02-02
    相关资源
    最近更新 更多