cmake字符串转数组_GitHub - patui/chinese-util-cpp: C++ 实现的汉字转拼音、拼音分词、简繁互转、数字转换、金额数字转换。...

chinese-util-cpp

介绍

C++ 实现的汉字转拼音、拼音分词、简繁互转、数字转换、金额数字转换。

支持与 PHP、Swoole 编译,支持在 PHP FFI 中运行。

编译

编译动态库

cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release

sudo cmake --build build --target install --config Release -j

带 PHP 编译:

cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release -DWITH_PHP=1

sudo cmake --build build --target install --config Release -j

带 Swoole 编译:

cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release -DWITH_PHP=1 -DWITH_SWOOLE=1

sudo cmake --build build --target install --config Release -j

指定 PHP include 路径

如果 php-config 无法正常使用,可能会需要手动指定

cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release -DWITH_PHP=1 -DWITH_SWOOLE=1 -DPHP_INCLUDE_DIR="/usr/include/php/20190902"

sudo cmake --build build --target install --config Release -j

指定 PHP include、lib 路径

Windows 系统需要用到

cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release -DWITH_PHP=1 -DWITH_SWOOLE=1 -DPHP_INCLUDE_DIR="C:\Windows\php-dev\include" -DPHP_LIB_DIR="C:\Windows\php-dev\lib"

sudo cmake --build build --target install --config Release -j

测试用例

cmake -Htest -Bbuild/test

cmake --build build/test --config Debug -j

cmake --build build/test --target test

项目起源

2020 年 7 月份开始想研究 C++,那么研究点什么好呢。想着反哺一下 PHP 生态,那么就为我之前开发的 ChineseUtil 提升一下性能吧。

于是有了一个多月的折腾研究,起初是折腾 C++ 项目的配置。

然后是开发了 FFI C 函数,效果不是很理想。性能甚至都不如 PHP 算法,原因是 FFI 转换字符串数组,甚至是二维数组,效率实在是太低并且麻烦,有内存泄漏风险。

经过一番研究,尝试了一下目前的方案,也就是调用 zend_register_functions() 函数来动态创建 PHP 函数。

类似于 PHP 扩展的开发,但是是通过 FFI 来创建的。

那么问题来了,为啥不直接做成 PHP 扩展?

我的本意呢,是让 ChineseUtil 这个库可以开箱即用,不需要编译、启用扩展啥的,麻烦。

PHP dl() 函数也可以动态加载扩展,但是很多环境中是被禁用的。

那么 FFI 来动态创建 PHP 函数,就成了最佳方案(也许)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值