linux .pc文件make,【已解决】在makefile中判断是cygwin还是Linux系统

【背景】

折腾:

期间,需要去判断在makefile中,判断是否是cygwin

最好也要能判断出是否是Linux

【解决过程】

1.关于判断系统类型,之前就在makefile中见到很多个。

2.但是自己没有真正写过。

现在去找找,如何写比较通用,靠谱。

3.自己先去试了试:Administrator@PC-20130611GART /cygdrive/e/Dev_Root/docbook/tools/docbook-xsl-ns-1.78.1/webhelp

$ uname -r

1.7.24s(0.270/5/3)

Administrator@PC-20130611GART /cygdrive/e/Dev_Root/docbook/tools/docbook-xsl-ns-1.78.1/webhelp

$ uname -a

CYGWIN_NT-6.1-WOW64 PC-20130611GART 1.7.24s(0.270/5/3) 20130830 16:14:01 i686 Cygwin

Administrator@PC-20130611GART /cygdrive/e/Dev_Root/docbook/tools/docbook-xsl-ns-1.78.1/webhelp

$ uname

CYGWIN_NT-6.1-WOW64

4.参考:

去试试:Administrator@PC-20130611GART /cygdrive/e/Dev_Root/docbook/tools/docbook-xsl-ns-1.78.1/webhelp

$ uname -s

CYGWIN_NT-6.1-WOW64

Administrator@PC-20130611GART /cygdrive/e/Dev_Root/docbook/tools/docbook-xsl-ns-1.78.1/webhelp

$ uname -r

1.7.24s(0.270/5/3)

Administrator@PC-20130611GART /cygdrive/e/Dev_Root/docbook/tools/docbook-xsl-ns-1.78.1/webhelp

$ uname -m

i686

5.参考:

去试试:Administrator@PC-20130611GART /cygdrive/e/Dev_Root/docbook/tools/docbook-xsl-ns-1.78.1/webhelp

$ uname -o

Cygwin

6.然后,对于uname的各种参数,还是先要去搞清楚:Administrator@PC-20130611GART /cygdrive/e/Dev_Root/docbook/tools/docbook-xsl-ns-1.78.1/webhelp

$ uname --help

用法:uname [选项]...

输出一组系统信息。如果不跟随选项,则视为只附加-s 选项。

-a, --all 以如下次序输出所有信息。其中若-p 和

-i 的探测结果不可知则被省略:

-s, --kernel-name 输出内核名称

-n, --nodename 输出网络节点上的主机名

-r, --kernel-release 输出内核发行号

-v, --kernel-version 输出内核版本

-m, --machine 输出主机的硬件架构名称

-p, --processor 输出处理器类型或"unknown"

-i, --hardware-platform 输出硬件平台或"unknown"

-o, --operating-system 输出操作系统名称

--help 显示此帮助信息并退出

--version 显示版本信息并退出

请向bug-coreutils@gnu.org 报告uname 的错误

GNU coreutils 的主页:

GNU 软件一般性帮助:

请向 报告uname 的翻译错误

要获取完整文档,请运行:info coreutils 'uname invocation'

Administrator@PC-20130611GART /cygdrive/e/Dev_Root/docbook/tools/docbook-xsl-ns-1.78.1/webhelp

$

然后就清楚了:o==operating-system:操作系统类型所以此处是cygwin,是正常的

估计Linux下,输出对应的类型

猜测是Ubuntu输出是Ubuntu

r==kernel-release:内核发行版

m==machine:硬件架构

i==hardware-platform:此处我的cygwin下输出就是:unknown

7.所以,还是-o靠谱,输出是Cygwin。

但是,即使可以确定是Cygwin,但是也最好,先去全部转换为小写的cygwin,然后再去判断和”cygwin”是否相同,

所以要去:

【总结】

然后最后通过:OS_NAME = $(shell uname -o)

LC_OS_NAME = $(shell echo $(OS_NAME) | tr '[A-Z]' '[a-z]')

ifeq ($(LC_OS_NAME), cygwin)

CUR_OS = "current os is cygwin"

else

CUR_OS = "current os not cygwin"

endif

checkos:

echo $(CUR_OS)

实现了,判断出当前os是cygwin还是其他(比如linux):

当然cygwin下,可以判断出来是cygwin:Administrator@PC-20130611GART /cygdrive/e/Dev_Root/docbook/tools/docbook-xsl-ns-1.78.1/webhelp

$ make checkos

echo "current os is cygwin"

current os is cygwin

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值