node.js的C++扩展之cmake编译-跨平台版

0、引言

        node-gyp到底干了些什么呢?其实干的事情和cmake、makefile是一抹一样的,所以他能干的事情,cmake依然可以,今天就介绍一种非常方便简单的nodejs的C++扩展编写方式,因为它依赖的文件在linux下仅为node的头文件。window下的话额外需要一个node.lib即可。根据平台条件编译,分别生成各种平台下的nodejs扩展模块,本片的代码跨平台。在最后方的链接,欢迎下载品尝。

1、依赖

2、cpp demo (官网demo)

#include "thirdPart/node/include/node/node.h"

namespace demo {

using v8::FunctionCallbackInfo;
using v8::Isolate;
using v8::Local;
using v8::NewStringType;
using v8::Object;
using v8::String;
using v8::Value;

void Method(const FunctionCallbackInfo<Value>& args) {
  Isolate* isolate = args.GetIsolate();
  args.GetReturnValue().Set(String::NewFromUtf8(
      isolate, "world", NewStringType::kNormal).ToLocalChecked());
}

void Initialize(Local<Object> exports) {
  NODE_SET_METHOD(exports, "hello", Method);
}

NODE_MODULE(hello, Initialize)

}

3、CMakeLists.txt

# Project Name 
SET( TARGETFILENAME "addon" )
PROJECT( ${TARGETFILENAME} ) 

#  CMake minimum version requirement setting
cmake_minimum_required(VERSION 3.8)
   
# node library 
SET(NODE_LIBRARIES node.lib) 
SET(NODE_LIBRARY_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/thirdPart/node/lib )
 
#  node library setting
IF (WIN32)
	FIND_LIBRARY(NODE_LIBRARY 
		NAMES  node 
		PATHS  ${CMAKE_CURRENT_SOURCE_DIR}/thirdPart/node/lib
	)
ENDIF (WIN32)
                         
# 设置包含目录
INCLUDE_DIRECTORIES(
    ${CMAKE_CURRENT_SOURCE_DIR}/thirdPart/node/include/node 
)                         

SET( src demo.cc)

# 设置库文件目录
# 确保在生成目标之前
# windows上执行语句
IF (WIN32)
	LINK_DIRECTORIES(${NODE_LIBRARY_DIRS})
ENDIF (WIN32)

# 生成可执行文件

#add_executable(${TARGETFILENAME} demo.cpp)


# 生成静态库

#ADD_LIBRARY(${TARGETFILENAME} STATIC demo.cpp) 


# 生成动态库或共享库
ADD_LIBRARY ( ${TARGETFILENAME} SHARED 
     ${src}
)

# 修改后缀名为  .node    
SET_TARGET_PROPERTIES(${TARGETFILENAME} PROPERTIES SUFFIX ".node")

# 设置链接库文件
# windows上执行语句
IF (WIN32)
	TARGET_LINK_LIBRARIES( ${TARGETFILENAME}
		${NODE_LIBRARIES}  
	)
ENDIF (WIN32)

4、node中运行 

deepin中运行结果:

 

树莓派中运行结果:

windows中运行结果:: 

5、结束语

       这难度,这舒适度、你品,你细品!资源链接https://download.csdn.net/download/qianlixiaomage/12309308

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我啥都会

如果觉得对您有帮助,打赏一下吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值