按位左移和| makefile

时间:2015-12-31 01:31:25

标签: makefile

我需要在makefile中进行左移和OR运算。如下所示:

a = $(b) << 2 | 0x1

...其中b是使用makefile中的$(shell )命令读取的数值。

我尝试了以下但没有帮助。

a = $(shell echo $(b) << 2 | bc)

我的意思是a得到b的值但不是运行脚本后的移位值。

1 个答案:

答案 0 :(得分:1)

bc的版本我可以访问不支持按位操作,所以它似乎在咆哮错误的树。默认shell gnumake使用的是/bin/sh,但您可以使用bash代替,然后直接访问bash的按位运算符:

SHELL=bash

a := $(( $(b) << 2 | 1 ))

感谢@EtanReisner指出这将导致整个字符串存储在变量a中,如果在配方中使用它,则会对其进行评估。如果你想直接存储在你的计算值仍然需要shell来评估它:

a := $(shell echo "$$(( $(b) << 2 | 1 ))" )