今天小编就为大家分享一篇关于Makefile/cmake/node-gyp中区分判断不同平台的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

最近用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'
    ]
    }]
   ]

总结

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

    无相关信息
最新资讯
回港上市或“撞车” B站和百度谁更值得投资?

回港上市或“撞车” B

B站和百度,一个是成功破圈的“后浪”,手握“中视频”流
社区团购巨头大战,“团长”进击

社区团购巨头大战,“团

在外界的一片质疑声中,巨头们的社区团购推进依然坚决,越
人类的饥饿极限到底有多长?

人类的饥饿极限到底有

长时间不进食,我们的身体会发生什么?人体耐饥饿极限是多
广东省省长马兴瑞:强化反垄断和防止资本无序扩张

广东省省长马兴瑞:强化

广东省省长马兴瑞:积极防范化解经济领域重大风险。强化
新冠变异病毒能逃逸免疫反应,专家纷纷表示担忧

新冠变异病毒能逃逸免

有证据表明,南非发现的新冠病毒变异株或能减弱人体免疫
历史上让疫苗失效的突变,都带来了什么?

历史上让疫苗失效的突

在人类疫苗开发的历史上,对疫苗产生耐药性的病毒和其它
最新文章
详解Vue的ref特性的使用

详解Vue的ref特性的使

这篇文章主要介绍了详解Vue的ref特性的使用,文中通过
vue学习笔记之slot插槽基本用法实例分析

vue学习笔记之slot插

这篇文章主要介绍了vue学习笔记之slot插槽基本用法,结
vue跳转方式(打开新页面)及传参操作示例

vue跳转方式(打开新页

这篇文章主要介绍了vue跳转方式(打开新页面)及传参操作,
vue学习笔记之过滤器的基本使用方法实例分析

vue学习笔记之过滤器

这篇文章主要介绍了vue学习笔记之过滤器的基本使用方
js获取本日、本周、本月的时间代码

js获取本日、本周、本

本篇文章给大家分享的内容是利用js如何获取本日、本周
node crawler如何添加promise支持

node crawler如何添加

这篇文章主要介绍了node crawler如何添加promise支持,