Makefile/cmake/node-gyp中区分判断不同平台的方法


Posted in Javascript onDecember 18, 2018

最近用QTK开发一个下载(下载到开发板)工具,同时用到了Makefile/cmake和node-gyp,而且都要针对不同平台做不同的处理。这里做个记录,以备以后有需要时查阅。

Makefile

在Makefile中,可以用OS变量判断当前系统是否是Windows,然后用uname来判断当前系统是MacOS还是其它系统。

ifeq ($(OS),Windows_NT)
 PLATFORM="Windows"
else
 ifeq ($(shell uname),Darwin)
  PLATFORM="MacOS"
 else
  PLATFORM="Unix-Like"
 endif
endif
all:
  @echo $(PLATFORM)

cmake

在cmake中,可以通过APPLE变量判断当前系统是否是MacOS,通过UNIX变量判断当前系统是否是UNIX,其它则认为是Windows。

if(APPLE)
//APPLE
elseif(UNIX)
//UNIX
else()
//Windows
endif()

node-gyp

在binding.gyp中,可以在conditions添加不同平台的处理。

'conditions': [
    ['OS=="mac"', {
     'xcode_settings': {
      'GCC_ENABLE_CPP_EXCEPTIONS': 'YES'
     },
     "sources": ["native/serial/src/impl/list_ports/list_ports_osx.cc","native/serial/src/impl/unix.cc"]
    },
    'OS=="win"', {
     "sources": ["native/serial/src/impl/list_ports/list_ports_win.cc","native/serial/src/impl/win.cc"],
     'libraries': [
     '-lsetupapi.lib',
     '-lws2_32.lib'
    ]
    }]
   ]

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Javascript 相关文章推荐
js的with语句使用方法
Sep 21 Javascript
js png图片(有含有透明)在IE6中为什么不透明了
Feb 07 Javascript
jquery的键盘事件修改代码
Feb 24 Javascript
jquery 面包屑导航 具体实现
Jun 05 Javascript
jQuery移动web开发之页面跳转和加载外部页面的实现
Dec 04 Javascript
jQuery Ajax 全局调用封装实例代码详解
Jun 02 Javascript
Angularjs的ng-repeat中去除重复数据的方法
Aug 05 Javascript
js实现图片放大展示效果
Aug 30 Javascript
通过button将form表单的数据提交到action层的实例
Sep 08 Javascript
JS库之Waypoints的用法详解
Sep 13 Javascript
浅析Javascript中双等号(==)隐性转换机制
Oct 27 Javascript
Vue Object.defineProperty及ProxyVue实现双向数据绑定
Sep 02 Javascript
JS监听滚动和id自动定位滚动
Dec 18 #Javascript
JS实现的tab页切换效果完整示例
Dec 18 #Javascript
CryptoJS中AES实现前后端通用加解密技术
Dec 18 #Javascript
antd组件Upload实现自己上传的实现示例
Dec 18 #Javascript
微信小程序解除10个请求并发限制
Dec 18 #Javascript
vue项目中axios请求网络接口封装的示例代码
Dec 18 #Javascript
vue中引入第三方字体文件的方法示例
Dec 17 #Javascript
You might like
多文件上传的例子
2006/10/09 PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
2014/11/29 PHP
PHP 二级子目录(后台目录)设置二级域名
2017/03/02 PHP
js控制滚动条缓慢滚动到顶部实现代码
2013/03/20 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
2013/08/16 Javascript
jQuery中attr()方法用法实例
2015/01/05 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
JS实现日期时间动态显示的方法
2015/12/07 Javascript
js自定义回调函数
2015/12/13 Javascript
AngularJS基础 ng-init 指令简单示例
2016/08/02 Javascript
js实现无缝循环滚动
2020/06/23 Javascript
jquery属性,遍历,HTML操作方法详解
2016/09/17 Javascript
jquery实现下拉框多选方法介绍
2017/01/03 Javascript
ReactJs实现树形结构的数据显示的组件的示例
2017/08/18 Javascript
关于jQuery里prev()的简单操作代码
2017/10/27 jQuery
js判断密码强度的方法
2020/03/18 Javascript
JS删除数组指定值常用方法详解
2020/06/04 Javascript
[01:32]DOTA2 2015国际邀请赛中国区预选赛第四日战报
2015/05/29 DOTA
[01:00:49]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第二场 1月31日
2021/03/11 DOTA
Python模块学习 datetime介绍
2012/08/27 Python
编写Python脚本来获取Google搜索结果的示例
2015/05/04 Python
Python爬虫框架Scrapy实战之批量抓取招聘信息
2015/08/07 Python
Python工程师面试题 与Python Web相关
2016/01/14 Python
利用Python脚本生成sitemap.xml的实现方法
2017/01/31 Python
解决PyCharm中光标变粗的问题
2017/08/05 Python
浅谈python中的占位符
2017/11/09 Python
Python的matplotlib绘图如何修改背景颜色的实现
2019/07/16 Python
Django密码系统实现过程详解
2019/07/19 Python
python pandas利用fillna方法实现部分自动填充功能
2020/03/16 Python
LTD Commodities:礼品,独特发现,家居装饰,家用器皿
2017/08/11 全球购物
欧铁通票官方在线销售网站:Eurail.com
2017/10/14 全球购物
如何删除一个表里面的重复行
2013/07/13 面试题
烹饪自我鉴定
2014/03/01 职场文书
宣传口号大全
2014/06/16 职场文书
电话客服专员岗位职责
2014/06/28 职场文书
python编程项目中线上问题排查与解决
2021/11/01 Python