通过automake检查make中的环境变量

2024-01-27

有没有办法让条件通过 automake,以便稍后将其传递到生成的 Makefile.in 和 Makefile?

我检查 JAVA_HOME 是否在 Makefile 的环境中定义

ifeq (undefined,$(origin JAVA_HOME))
#CALL with defaults
else
#CALL according to the variable
endif

但是当我使用 automake 在 Makefile.am 中处理这个问题时,出现两个错误:

else without if
endif without if

看起来 automake 没有消化 ifeq。有没有办法通过它传递这个(如果这样做有意义的话),或者是否有另一种自动工具友好的方式来获得相同的结果?

这个想法还允许在运行 make 之前设置/更改变量,以轻松针对不同的 JDK。


我认为正确的方法是:

Rely on $(JAVA_HOME)被设置在Makefile.am并确保为它设置一个合理的值configure.

回答书面问题:

Because automake想要生成适用于 POSIX make 的 Makefile,但它与 GNU-make 条件语句的配合不太好。

所以你做测试configure.ac:

AC_SUBST([JAVA_HOME])
AM_CONDITIONAL([JAVA_HOME_SET], [test ! -z "$JAVA_HOME"])

然后在Makefile.am中:

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

通过automake检查make中的环境变量 的相关文章

  • .ko 文件是如何构建的

    我正在尝试将我自己的驱动程序移植到Beagle 板 xm arm cortex A8 在移植时我试图弄清楚如何 ko文件实际构建 在我们的Makefile我们只有一个命令来构建 o file 怎样是一个 ko文件已建立 使用Linux 2
  • Qt 和 MOC 的困境与简单的制作

    我想这更像是一个 GNU Make 问题 而不是 Qt 和 moc 但这里是 我有一个包含多个目录Q OBJECTS 我有一些简单的代码 它收集所有这些 例如 MOCS shell grep l Q OBJECT HEADERS Assum
  • 错误:-march= 开关的值错误

    我写了一个Makefile 但无法让它工作 我有一个选项应该选择编译到哪个处理器 然而 当我跑步时make从命令行它说 tandex tandex P 6860FX emulators nintendo sdks 3DS SDK HomeB
  • 主管和环境变量

    我真的不知道如何让主管使用环境变量 下面是一个配置片段 program htNotificationService priority 2 autostart true autorestart true directory home ubun
  • 使用 MS NMAKE 打印长编译行

    我有一个遗留的 MS NMAKE Makefile 我需要修复其中的一些错误 我希望调试一些非常长的命令行 这些命令行正在使用 NMAKE 技巧执行 内联文件 http msdn microsoft com en us library se
  • 为什么 Visual Studio Code 在编辑 Makefile 和 "editor.insertSpaces": "auto" 时插入空格?

    make 不喜欢 Makefile 中的目标主体有空格 必须是一个标签 我将 editor insertSpaces 更改为 auto 认为这会有所帮助 事实并非如此 我必须将其设置为 false 才能使代码正常工作 现在可以通过语言特定设
  • 如何在 Heroku 预览应用部署后脚本中设置 ENV var

    我想设置HOST环境变量到 HEROKU APP NAME herokuapps com在预览应用程序上 看来我不能这样做app json因为这是一个计算值 我希望在像这样的 部署后 脚本中做到这一点 heroku config set H
  • 如何将当前目录捕获为 make 变量中的绝对路径名?

    我想在 GNUmake 文件运行期间获取当前目录并将其放入 make 变量中 执行此操作的语法是什么 像这样的东西吗 DIR PWD Um no PWD有时是在您的环境中定义的 因此由 make 继承 但通常不是 你需要 CURDIR DI
  • 标题的宏定义,放在哪里?

    定义头文件依赖的宏时 例如 FILE OFFSET BITS FUSE USE VERSION GNU SOURCE其中 放置它们的最佳位置在哪里 我考虑过的一些可能性包括 位于依赖于该文件中包含的标头公开的定义的任何源文件的顶部 紧接在相
  • 在 GDB 中,如何将 'exec-wrapper env' 设置为多个环境变量?

    在 GDB 中 您可以使用以下命令设置进程的环境变量set exec wrapper env MYENVVAR 这很好用 但我不确定如何设置多个 是否必须使用某种分隔符 我想同时设置LD PRELOAD and LD LIBRARY PAT
  • Visual Studio 属性页环境变量

    如果右键单击解决方案资源管理器中的项目并转到常规 gt 调试 则会有一个环境部分 您应该能够使用语法 NAME VALUE 设置环境变量 我的问题是 如果我尝试在那里创建一个新的环境变量 它似乎实际上不起作用或无法设置 有人对这个有经验么
  • Dotenv 仍然是 6.x.x Node 的必需软件包吗?

    我最近使用 env 文件设置了一个简单的项目 并使用 process env variable name 在我的代码中调用了 env 变量 它完全可以工作 而无需添加dotenv https www npmjs com package do
  • 为什么 make 会删除我的临时文件?

    我有一个简单的 Makefile PHONY clean PROGRAMS patsubst main cpp example wildcard main cpp all PROGRAMS GCCVERSION shell gcc dump
  • 无法关闭 gcc 优化器、automake 中的 Makefile

    我想得到ZBar http zbar sourceforge net 在调试会话中 我可以这样做 但我无法关闭优化器 因此我的调试会话意外地跳转 并且许多变量被标记为optimized out在 Eclipse Indigo 中 我在 Ub
  • 如何在 Makefile 中自动创建(和删除)临时目录?

    是否可以有make在执行第一个目标之前创建一个临时目录 也许使用一些黑客 一些额外的目标等 Makefile 中的所有命令都可以引用自动创建的目录 TMPDIR 并且该目录将被自动删除make命令结束 以前的这些答案要么不起作用 要么看起来
  • 将 JSON 导出到环境变量

    如果我有这样的 JSON hello1 world1 testk testv 我想将每个键值对导出为环境变量 如何通过 shell 脚本来做到这一点 例如 当我在终端上写时 echo hello1 world1应该打印其他键值对吗 注意 上
  • 从 R 环境中删除对象

    我正在阅读 Hadley 的 Advanced R 在第 8 章中 他说我们可以使用以下方法从环境中删除对象 rm 但是 移除该物体后我仍然可以看到该物体 这是我的代码 e lt new env e a lt 1 e b lt 2 e a
  • Rails 4.1 环境变量未重新加载

    我创建了一个application yml文件在配置目录中并添加了一些键值对 即AWS REGION us east 1 我还添加了以下内容application rb读取文件并更新 ENV 哈希 if Rails env developm
  • 在 NodeJS 中将子进程的输出保存在父进程的变量中

    我想在 NodeJS 中启动一个子进程并将其输出保存到一个变量中 以下代码将其提供给标准输出 require child process execSync echo Hello World stdio inherit 我的想法与此代码类似
  • 从 make 文件中禁用 make 内置规则和变量

    我想根据传递禁用内置规则和变量 r and R options http www gnu org software make manual make html Options Summary从 make 文件内部到 GNU make 也欢迎

随机推荐