如何在Makefile中表达以下逻辑?
if $(XORG_VERSION) > "7.7"
<do some thing>
fi
Run Code Online (Sandbox Code Playgroud)
Makefile的条件部分仅提供ifeq或ifneq.
ana*_*lyg 14
我使用该sort函数按字典顺序比较值.这个想法是,排序两个值的列表,$(XORG_VERSION)和7.7,然后在第一个值-如果它是7.7那么的版本相同或更高.
ifeq "7.7" "$(word 1, $(sort 7.7 $(XORG_VERSION)))"
<do some thing>
endif
Run Code Online (Sandbox Code Playgroud)
调整7.7到7.8如果你需要严格大于条件.
这种方法通过避免shell脚本以及有关可用OS shell功能的伴随假设来提高可移植性.但是,如果词典排序不等于数字排序,则失败,例如比较7.7和7.11.
您不限于使用make条件语句 - 每个命令都是一个shell命令,可能会像您需要的那样复杂(包括shell条件语句):
请考虑以下事项makefile:
dummy:
if [ ${xyz} -gt 8 ] ; then \
echo urk!! ${xyz} ;\
fi
Run Code Online (Sandbox Code Playgroud)
使用时xyz=7 make --silent,没有输出.使用时xyz=9 make --silent,它会urk!! 9按预期输出.
| 归档时间: |
|
| 查看次数: |
5116 次 |
| 最近记录: |