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 相关文章推荐
javascript语句中的CDATA标签的意义
May 09 Javascript
javascript this用法小结
Dec 19 Javascript
jquery插件jTimer(jquery定时器)使用方法
Dec 23 Javascript
Jquery弹出层插件ThickBox的使用方法
Dec 09 Javascript
Bootstrap缩略图与警告框学习使用
Feb 08 Javascript
Angular2下使用pdf插件的方法详解
Apr 29 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
May 02 Javascript
JS动态修改网页body的背景色实例代码
Oct 07 Javascript
Node.js上传文件功能之服务端如何获取文件上传进度
Feb 05 Javascript
js对象数组和对象的使用实例详解
Aug 27 Javascript
ES2020 已定稿,真实场景案例分析
May 25 Javascript
Javascript新手入门之字符串拼接与变量的应用
Dec 03 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使用百度天气接口示例
2014/04/22 PHP
ThinkPHP模板判断输出Empty标签用法详解
2014/06/30 PHP
编写PHP脚本过滤用户上传的图片
2015/07/03 PHP
php实现可逆加密的方法
2015/08/11 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
js每次Title显示不同的名言
2008/09/25 Javascript
用jQuery技术实现Tab页界面之二
2009/09/21 Javascript
javascript parseInt与Number函数的区别
2010/01/21 Javascript
js select常用操作控制代码
2010/03/16 Javascript
jquery获取div宽度的实现思路与代码
2013/01/13 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
2013/12/22 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
快速使用Bootstrap搭建传送带
2016/05/06 Javascript
jQuery获取复选框被选中数量及判断选择值的方法详解
2016/05/25 Javascript
javascript DOM的详解及实例代码
2017/03/06 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
2017/07/09 Javascript
require.js中的define函数详解
2017/07/10 Javascript
全面了解JavaScript的作用域链
2019/04/03 Javascript
微信小程序如何调用图片接口API并居中显示
2019/06/29 Javascript
javascript实现blob加密视频源地址的方法
2019/08/08 Javascript
Js和VUE实现跑马灯效果
2020/05/25 Javascript
[46:16]2018DOTA2亚洲邀请赛3月30日 小组赛B组 iG VS VP
2018/03/31 DOTA
[01:02:26]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第二场 1月18日
2021/03/11 DOTA
Python使用SocketServer模块编写基本服务器程序的教程
2016/07/12 Python
详解supervisor使用教程
2017/11/21 Python
全面分析Python的优点和缺点
2018/02/07 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
2019/07/04 Python
详解python中的模块及包导入
2019/08/30 Python
Pytorch maxpool的ceil_mode用法
2020/02/18 Python
python 基于wx实现音乐播放
2020/11/24 Python
年终晚会主持词
2014/03/25 职场文书
保护环境建议书300字
2014/05/13 职场文书
党支部组织生活会整改方案
2014/09/30 职场文书
村主任“四风”问题个人整改措施
2014/10/04 职场文书
学校党风廉政建设调研报告
2015/01/01 职场文书
小学感恩节活动总结
2015/03/24 职场文书