gpt4 book ai didi

autoconf - 如何理解autoconf中的AS_IF?

转载 作者:行者123 更新时间:2023-12-05 05:27:16 25 4
gpt4 key购买 nike

文件说

Macro: AS_IF (test1, [run-if-true1], ..., [run-if-false])

Run shell code test1. If test1 exits with a zero status then run shell code run-if-true1, else examine further tests. If no test exits with a zero status, run shell code run-if-false, with simplifications if either run-if-true1 or run-if-false is empty.

configure.ac文件包含

AS_IF([test "$have_hdf5" != "no"], [AC_DEFINE([HAVE_HDF5], [], [we have HDF5 library + headers])])

但是当我输入运行 shell 代码 test1,即测试 "$have_hdf5"!= "no" 时,什么也没有出现。无论我输入什么(例如 test $have_hdf5),我都一无所获。但是当我 ./configure 时它确实有效。那么 AS_IFtest1 shell 代码是如何工作的呢?是不是在测试一些环境变量?

最佳答案

test 实用程序没有可见的输出,除非您提供错误的表达式。

如果表达式为真,

test 将以 0 状态退出,非零退出状态表示表达式为假(或无效)。

AS_IF 测试您作为其第一个参数提供的表达式的退出状态。

如果为 0(真),则执行关联的代码块。如果不是,它会继续下一个测试表达式并以相同的行为执行。

这种情况会发生,直到宏用完测试为止。一旦发现所有测试都为假,如果提供了最后一个参数,它就会执行最后一个参数的内容。

编辑

当然,如果您没有在当前 shell 中定义“have_hdf5”,那么当您单独执行 test 表达式时它不会为真,但如果在配置脚本中为真,它会做它应该做的。在任何情况下,除非使用输出语句,否则不会发生输出。

关于autoconf - 如何理解autoconf中的AS_IF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20818917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com