我想在 m4 文本中包含一个相对于我的沙箱基目录的文件,而不使用-I
switch.
到目前为止,我已经弄清楚如何使用系统调用来获取环境变量:
define(MODEL_ROOT,`syscmd(`printf $MODEL_ROOT')')dnl
接下来,我想包含一个基于该环境变量的文件:
include(MODEL_ROOT/sw/lib/m4_macros/foreach2.m4)
总共,我有:
define(MODEL_ROOT,`syscmd(`printf $MODEL_ROOT')')
MODEL_ROOT
MODEL_ROOT/sw/lib/m4_macros/foreach2.m4
include(MODEL_ROOT/sw/lib/m4_macros/foreach2.m4)
哪个打印:
/home/ross/sandbox
/home/ross/sandbox/sw/lib/m4_macros/foreach2.m4
/home/ross/sandboxforeach_example.m4:7: m4: Cannot open /sw/lib/m4_macros/foreach2.m4: No such file or directory
我知道包含的正常语法是
include(`file.m4')
但如果我引用MODEL_ROOT/sw/lib/m4_macros/foreach2.m4
,然后 m4 像:
[...]
include(`MODEL_ROOT/sw/lib/m4_macros/foreach2.m4')
m4 抱怨:
[...]
foreach_example.m4:7: m4: Cannot open MODEL_ROOT/sw/lib/m4_macros/foreach2.m4: No such file or directory
如何在其路径中包含带有环境变量的文件?
我认为你需要使用esyscmd
代替syscmd
. esyscmd
读取命令行输出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)