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 相关文章推荐
iframe 异步加载技术及性能分析
Jul 19 Javascript
js加入收藏以及使用Jquery更改透明度
Jan 26 Javascript
JS打字效果的动态菜单代码分享
Aug 21 Javascript
JS实现兼容性好,自动置顶的淘宝悬浮工具栏效果
Sep 18 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
Apr 01 Javascript
JS常用算法实现代码
Nov 14 Javascript
node.js学习之交互式解释器REPL详解
Dec 08 Javascript
jQuery中页面返回顶部的方法总结
Dec 30 Javascript
javascript json字符串到json对象转义问题
Jan 22 Javascript
Vue实现购物车详情页面的方法
Aug 20 Javascript
vue中提示$index is not defined错误的解决方式
Sep 02 Javascript
用JS写一个发布订阅模式
Nov 07 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实现的支持imagemagick及gd库两种处理的缩略图生成类
2014/09/23 PHP
常用PHP框架功能对照表
2014/10/23 PHP
php对文件进行hash运算的方法
2015/04/03 PHP
thinkphp,onethink和thinkox中验证码不显示的解决方法分析
2016/06/06 PHP
PHP addAttribute()函数讲解
2019/02/03 PHP
Extjs Ext.MessageBox.confirm 确认对话框详解
2010/04/02 Javascript
jQuery UI Dialog控件中的表单无法正常提交的解决方法
2010/12/19 Javascript
jquery选择器之属性过滤选择器详解
2014/01/27 Javascript
javascript 实现子父窗体互相传值的简单实例
2014/02/17 Javascript
javascript实现控制浏览器全屏
2015/03/30 Javascript
jQuery实现批量判断表单中文本框非空的方法(2种方法)
2015/12/09 Javascript
JS实现登录页面记住密码和enter键登录方法推荐
2016/05/10 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
2016/11/09 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
layui弹出层效果实现代码
2017/05/19 Javascript
详解windows下vue-cli及webpack 构建网站(二)导入bootstrap样式
2017/06/17 Javascript
详谈for循环里面的break和continue语句
2017/07/20 Javascript
Three.js利用Detector.js插件如何实现兼容性检测详解
2017/09/26 Javascript
vue 自定义 select内置组件
2018/04/10 Javascript
Vue2.0点击切换类名改变样式的方法
2018/08/22 Javascript
微信小程序视图控件与bindtap之间的问题的解决
2019/04/08 Javascript
详解JavaScript 作用域
2020/07/14 Javascript
[01:00:12]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第一场
2018/04/09 DOTA
Python MD5加密实例详解
2017/08/02 Python
Python tornado上传文件的功能
2020/03/26 Python
Python使用正则表达式实现爬虫数据抽取
2020/08/17 Python
毕业生在校学习的自我评价分享
2013/10/08 职场文书
校园之星获奖感言
2014/01/29 职场文书
大学生交通专业求职信
2014/09/01 职场文书
因个人工作失误检讨书
2019/06/21 职场文书
《中国机长》观后感:敬畏生命,敬畏职责
2019/11/12 职场文书
Nginx反爬虫策略,防止UA抓取网站
2021/03/31 Servers
linux下导入、导出mysql数据库命令的实现方法
2021/05/26 MySQL
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫
Spring boot admin 服务监控利器详解
2022/08/05 Java/Android