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 相关文章推荐
jQuery-onload让第一次页面加载时图片是淡入方式显示
May 23 Javascript
javascript设计模式之中介者模式Mediator
Dec 30 Javascript
JS中对数组元素进行增删改移的方法总结
Dec 15 Javascript
jquery实现文字单行横移或翻转(上下、左右跳转)
Jan 08 Javascript
AngularJS遍历获取数组元素的方法示例
Nov 11 Javascript
自己动手封装一个React Native多级联动
Sep 19 Javascript
iview Upload组件多个文件上传的示例代码
Sep 30 Javascript
vue--vuex详解
Apr 15 Javascript
Django模板继承 extend标签实例代码详解
May 16 Javascript
koa2 从入门到精通(小结)
Jul 23 Javascript
小程序实现投票进度条
Nov 20 Javascript
antd日期选择器禁止选择当天之前的时间操作
Oct 29 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
PHP 获取MSN好友列表的代码(2009-05-14测试通过)
2009/09/09 PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
2012/03/01 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
2016/03/21 PHP
js AspxButton的客户端操作
2009/06/26 Javascript
基于Jquery的实现回车键Enter切换焦点
2010/09/14 Javascript
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
2013/06/09 Javascript
JavaScript每天定时更换皮肤样式的方法
2015/07/01 Javascript
jquery实现向下滑出的二级导航下滑菜单效果
2015/08/25 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
Bootstrap table表格简单操作
2017/02/07 Javascript
利用JS对iframe父子(内外)页面进行操作的方法教程
2017/06/15 Javascript
JS通过调用微信API实现微信支付功能的方法示例
2017/06/29 Javascript
对于input 框限定输入值为浮点型的js代码
2017/09/25 Javascript
react-redux中connect的装饰器用法@connect详解
2018/01/13 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
2018/03/02 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
python爬取网站数据保存使用的方法
2013/11/20 Python
基于Django用户认证系统详解
2018/02/21 Python
python的继承知识点总结
2018/12/10 Python
详解10个可以快速用Python进行数据分析的小技巧
2019/06/24 Python
快速解决docker-py api版本不兼容的问题
2019/08/30 Python
python实现在内存中读写str和二进制数据代码
2020/04/24 Python
Python参数传递对象的引用原理解析
2020/05/22 Python
keras的siamese(孪生网络)实现案例
2020/06/12 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
2020/07/01 Python
python+django+selenium搭建简易自动化测试
2020/08/19 Python
python实现数据结构中双向循环链表操作的示例
2020/10/09 Python
Python页面加载的等待方式总结
2021/02/28 Python
Yahoo-PHP面试题3
2012/01/14 面试题
标记环介质访问控制协议
2016/03/27 面试题
主管竞聘书范文
2014/03/31 职场文书
小学优秀班干部事迹材料
2014/05/25 职场文书
代理人委托书
2014/09/16 职场文书
2014年计生协会工作总结
2014/11/21 职场文书
不会写演讲稿,快来看看这篇文章!
2019/08/06 职场文书
oracle设置密码复杂度及设置超时退出的功能
2022/06/28 Oracle