如何编写可以分辨英特尔OS X和Linux之间差异的Makefile?

时间:2011-07-01 03:43:04

标签: linux macos makefile gnu-make

如何将条件写入GNU make Makefile,它可以识别架构(在这种情况下是Intel OS X vs Linux),这样我就可以适当地设置标志,而无需最终用户指定运行make -f时的Makefile?

修改

如果此条件位于目标之外,我应该指定从包含shell命令的ifeq语句中获取makefile错误:

'commands commence before first target. Stop.'

2 个答案:

答案 0 :(得分:10)

您应该能够检查其中一个uname变体的输出,然后根据具体情况选择makefile的不同操作。

运行man uname了解详情。

就如何在GNU make中使用它而言,您可以将信息从shell函数转换为变量,然后对该变量使用ifeq

platform=$(shell uname -o)

ifeq ($(platform),Cygwin)

defrule:
    echo I am running in Cygwin.

else

defrule:
    echo I am running elsewhere.

endif

答案 1 :(得分:1)

uname是你的朋友。

$ uname -o
GNU/Linux