imfuxiao / LibrimeKit

librime to ios. use swift package manager.
19 stars 11 forks source link

Add arm64 simulator support to deps library #8

Closed tansongchen closed 1 year ago

tansongchen commented 1 year ago

"libglog" "libleveldb" "libmarisa" "libopencc" "libyaml-cpp" 5 个依赖增加了 arm64 simulator 的支持,方法是用不同的 CMAKE_OSX_SYSROOT 变量编译两遍,make xcode/simulator/deps 得到的同平台不同架构 FAT lib 可以直接传给 xcodebuild。编译出的 xcframework 放到仓的主程序测试了,没有问题。

image

librime 本身因为用了 toolchain file,情况有所不同,放到下一个 pr 再做

tansongchen commented 1 year ago

另外有个相关的问题:

https://github.com/imfuxiao/LibrimeKit/blob/main/librimeBuild.sh#L46

这里

  sed -i "" '/#if RIME_BUILD_SHARED_LIBS/,/#endif/c\
  #if RIME_BUILD_SHARED_LIBS\
  #define rime_declare_module_dependencies()\
  #else\
  extern void rime_require_module_core();\
  extern void rime_require_module_dict();\
  extern void rime_require_module_gears();\
  extern void rime_require_module_levers();\
  extern void rime_require_module_lua();\
  // link to default modules explicitly when building static library.\
  static void rime_declare_module_dependencies() {\
    rime_require_module_core();\
    rime_require_module_dict();\
    rime_require_module_gears();\
    rime_require_module_levers();\
    rime_require_module_lua();\
  }\
  #endif\
  ' ${LIBRIME_ROOT}/src/rime_api.cc

为什么不一起放到 librime.patch 里?现在因为 rime.api.cc 的改动不是在 patch 里,重新生成 patch 文件的时候必须要手动忽略 rime.api.cc。如果合并到 patch 里,以后每次改动 librime 的文件时,可以直接用 git diff 导出 patch

imfuxiao commented 1 year ago

另外有个相关的问题:

https://github.com/imfuxiao/LibrimeKit/blob/main/librimeBuild.sh#L46

这里

  sed -i "" '/#if RIME_BUILD_SHARED_LIBS/,/#endif/c\
  #if RIME_BUILD_SHARED_LIBS\
  #define rime_declare_module_dependencies()\
  #else\
  extern void rime_require_module_core();\
  extern void rime_require_module_dict();\
  extern void rime_require_module_gears();\
  extern void rime_require_module_levers();\
  extern void rime_require_module_lua();\
  // link to default modules explicitly when building static library.\
  static void rime_declare_module_dependencies() {\
    rime_require_module_core();\
    rime_require_module_dict();\
    rime_require_module_gears();\
    rime_require_module_levers();\
    rime_require_module_lua();\
  }\
  #endif\
  ' ${LIBRIME_ROOT}/src/rime_api.cc

为什么不一起放到 librime.patch 里?现在因为 rime.api.cc 的改动不是在 patch 里,重新生成 patch 文件的时候必须要手动忽略 rime.api.cc。如果合并到 patch 里,以后每次改动 librime 的文件时,可以直接用 git diff 导出 patch

您好,这个问题是因为,此处对代码的改动是临时方案,这里不是 librime 推荐的插件编译方案。但是我使用 librime 编译插件的方案进行编译,发现移动端并不能加载 lua 模块,排查没有找到问题原因,只能使用对代码修改的方式。

tansongchen commented 1 year ago

好的,理解了!