Autoconf:如何将安装路径获取到config.h中

2024-02-03

我的程序需要在运行时加载一些文件,这些文件将安装到指定的任何文件夹中./configure --datadir=/somewhere

由于我的程序需要在运行时知道该文件夹的位置,因此我需要在某处 #define 一个符号,以便 C 代码可以以字符串形式访问该路径。

我目前正在通过修改编译器标志来做到这一点:

AM_CPPFLAGS = -DDATA_PATH=\"$(pkgdatadir)\"

然而,由于配置脚本已经生成了一个 config.h 文件,其中包含许多其他内容,因此我希望该符号出现在其中。

那可能吗?


您的答案是首选的做法。 autoconf 手册解释了如何在“make install”时覆盖各种变量(例如,这对于打包非常有用)。在这样做时,它说(在“安装目录变量”部分中):

   A corollary is that you should not use these variables except in
makefiles.  For instance, instead of trying to evaluate `datadir' in
`configure' and hard-coding it in makefiles using e.g.,
`AC_DEFINE_UNQUOTED([DATADIR], ["$datadir"], [Data directory.])', you
should add `-DDATADIR='$(datadir)'' to your makefile's definition of
`CPPFLAGS' (`AM_CPPFLAGS' if you are also using Automake).

自动工具和一般的构建系统是一项复杂的业务,还没有人想出很好、简洁的方法来完成足够通用的事情,这意味着我们必须阅读像这样的部分并充分解决它。无论如何,你的直觉是正确的!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Autoconf:如何将安装路径获取到config.h中 的相关文章

随机推荐

  • 解析 HTTParty 响应

    我正在使用 HTTParty 提取 Facebook 用户的书籍列表 但在解析响应时遇到问题 Facebook 以这种方式返回数据 data name Title category Book id 21192118877902 create
  • Mac上像Cloud App一样自动截图上传

    云应用程序 http getcloudapp com 有这个巧妙的功能 当新的屏幕截图添加到桌面时 它会自动上传它们 有什么想法如何做到这一点吗 您可以自己做类似的事情 而无需太多编程方式 在操作系统中 您可以配置 文件夹操作 http w
  • Android自定义视图组委托addView

    我想实现自定义ViewGroup就我而言 源自FrameLayout但我希望从 xml 添加的所有子视图不直接添加到此视图中 而是添加到FrameLayout包含在这个习俗中ViewGroup 让我举个例子来说明这一点
  • 缺少必需的模块 Firebase - Jenkins 构建错误

    我已经配置了 jenkins 来构建我的 ios swift 应用程序 我用过 xcode 版本 8 1 和 swift 版本 3 我是 Jenkins 的新手 并继续集成过程 根据我的控制台输出 我认为构建成功 因为控制台输出像这样打印
  • java.lang.UnsupportedOperationException:AdapterView 中不支持 addView(View, LayoutParams)

    我正在使用网上找到的 Expandable ListView 示例 活动 public class ExpandableListViewActivity extends ExpandableListActivity strings for
  • utf8mb4_unicode_ci 与 utf8mb4_bin

    首先让我们看看我是否做对了 字符集是一组符号和编码 排序规则是用于比较字符集中字符的一组规则 我应该使用 utf8mb4 因为 mysql utf8 是一种欺诈 最多 3 字节 而不是 PHP 中真正的最多 4 字节真正的 utf8 字符集
  • 打字稿和传播运算符?

    function foo x number y number z number console log x y z var args number 0 1 2 foo args 为什么我在 Typescript Playground 中收到
  • 多个 Activemq 远程代理的 Spring 配置

    如何在spring上下文中配置多个远程activemq代理 不同的IP地址 以下是 1 个远程代理的配置 我正在使用camel来创建路由 用于在多个远程代理中的不同队列中生成和使用消息 根据以下路由 系统如何知道每个队列属于哪个远程代理 项
  • 没有为命名空间 / 和操作名称 hello 映射的操作

    package com tutorialspoint struts2 public class HelloWorldAction private String name public String execute throws Except
  • 如何在asp.net core 1.0中获取当前的url

    在以前版本的 ASP NET 中 我们可以使用 Request Url AbsoluteUri 但似乎已经改变了 我们如何在 ASP NET Core 1 0 中做到这一点 您必须分别获取主机和路径 Context Request Host
  • 画一棵二叉树

    我正在寻找一个js库 它允许用户绘制二叉树 添加 删除叶子 添加 删除父节点等 我发现了很多库 但其中大多数仅用于数据可视化 例如 d3 而不是从浏览器中绘制 这真的存在吗 Thanks 看看现有的绘制图表的东西 树就是图 纯 JavaSc
  • 使用 jQuery 将具有相对路径的外部 HTML 页面加载到 DIV 中

    我对 jQuery 比较陌生 如果这个问题太简单 请原谅 但我已经搜索了许多线程几个小时 但找不到明确的解决方案 我有以下文件夹结构 index html html pages page1 html html pages images ht
  • 在 Postgres 中使用 DELETE 的返回值进行 UPDATE

    我需要使用从另一个表中删除的值来更新表 情况是类似于SO 上的评论投票记分员 我正在使用 python 来处理 postgres 但这应该没有什么区别 query UPDATE comment SET score score DELETE
  • persistence.xml 中 jpa 的 C3p0 连接池不起作用?

    在尝试按照我能找到的所有示例配置 c3p0 后 我仍然遇到 JDBC 超时问题 我正在使用 JPA Hibernate Tomcat MySQL AWS RDS 这是 persistence xml 的片段
  • 需要 Django 表单集

    如何使 django formset 中的所有表单都成为必需的 我试图验证所有字段的存在cleaned data重写 formset 的 clean 方法 但它只是默默地失败 没有显示任何错误 Thanks 源代码 class BaseSc
  • 检查我的系统中是否安装了 Python 软件包?

    如何检查我的系统中是否安装了某些软件包 我的系统是Linux 但如果它能在其他操作系统上运行就更好了 我的意思是操作系统特定的软件包 例如可能是 rpm 或 deb 有没有 python 模块或脚本可以做到这一点 要查明您是否安装了 deb
  • 如何在不单击按钮的情况下将两个值相乘 - javascript

    这是我的小提琴 http jsfiddle net YFgkB 6 http jsfiddle net YFgkB 6
  • 有没有办法从 Qt 中的另一个信号触发一个信号?

    我已经有了一个应用程序 现在正在对其进行调整 在这方面 我引入了一个新信号 当发出另一个信号时必须发出该信号 这在 Qt 中可能吗 编写一个插槽只是为了发出这个信号感觉如此原始和蹩脚 进一步详细说明 我必须将按钮 signalClicked
  • 如何检查哪些提交尚未推送到原点?

    我已经向我的本地分支 我们就说 master 做出了提交 并让 git pull 下来了其他人所做的更改 当我运行 git status 时 我看到类似以下内容 Your branch is ahead of origin master b
  • Autoconf:如何将安装路径获取到config.h中

    我的程序需要在运行时加载一些文件 这些文件将安装到指定的任何文件夹中 configure datadir somewhere 由于我的程序需要在运行时知道该文件夹的位置 因此我需要在某处 define 一个符号 以便 C 代码可以以字符串形