动静态库快速编译为鸿蒙版本

今天来说一说Napi的编译,按照官方给出的示例,用IDE创建Native C++工程,该napi_init.cpp文件即可。确实,这样是没有问题的。但如果我想写一个动态库,提供给其它工程来用呢?熟悉IDE的会说,去build目录里复制出来就行了。没错,可以这样,但个人很不喜欢,so文件在build目录里真的太深了,不只目录深,隐藏的也深。

仔细观察编译生成的路径,在.cxx目录下,有一个metadata_generation_command.txt文件,打开文件,内容如图

cke_8795.png

可以看到,cmake编译时的命令就在这个文件里,这样就好办了,自己写一个批处理,已有动态库编译成鸿蒙版本就可以和其它CPU架构一样了。非napi项目也可以通用。

首先,cmake和native路径都在SDK的安装目录,所以,先配置环境变量,如图:

cke_29418.png

上图为windows下的配置方式,linux可以通过去改.bashrc文件,来追加环境变量,这里不细说了。

最后,整理编译脚本如下

@echo off

REM 设置命令窗口显示文字为UTF8编码
CHCP 65001

set OHOS_ABI=%1
set BUILD_PATH="build-ohos-%OHOS_ABI%"

if exist %BUILD_PATH% rmdir /Q /S %BUILD_PATH%

mkdir %BUILD_PATH%

REM cd %BUILD_PATH%

set OHOS_SDK=Y:\OpenHarmony\Sdk\10
set NINJA_MAKE=%OHOS_SDK%\native\build-tools\cmake\bin\ninja.exe
set BUILD_TYPE=Release

%OHOS_SDK%\native\build-tools\cmake\bin\cmake.exe -B%BUILD_PATH% -DOHOS_ARCH=%OHOS_ABI% -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=out -DCMAKE_BUILD_TYPE=%BUILD_TYPE% -DOHOS_SDK_NATIVE=%OHOS_SDK%\native -DCMAKE_SYSTEM_NAME=OHOS -DCMAKE_OHOS_ARCH_ABI=%OHOS_ABI% -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_TOOLCHAIN_FILE=%OHOS_SDK%\native\build\cmake\ohos.toolchain.cmake -GNinja -DCMAKE_MAKE_PROGRAM=%NINJA_MAKE% --no-warn-unused-cli

cd %BUILD_PATH%

%NINJA_MAKE%

pause复制

上面脚本默认Cmakelist.txt和bat文件在同一目录,如果不在同一目录可以自行修改Cmakelist.txt的位置,具体方法可以查看cmake的帮助。

执行脚本如下

@echo off

REM 设置命令窗口显示文字为UTF8编码
CHCP 65001

start /min cmd /c build-ohos-release.bat armeabi-v7a

start /min cmd /c build-ohos-release.bat arm64-v8a

start /min cmd /c build-ohos-release.bat x86_64
复制

鸿蒙只支持上面三种架构,可以根据需要注释掉不需要的架构,双击后脚本启动多个线程同步编译。ninja编译时,也可以和make一样,加上-j选项进行多线程编译。

Linux的shell脚本可以参考类似的方法来写,这里就不提供示例了。

至于Cmakelist.txt的编写,这里就不详细介绍了,其实并不难,而且大多数人也是会的。

今天的内容就到这里吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阿捏利

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值