CMake object library 的延迟解析与对象文件传递
给日志模块整理依赖时,目标很朴素:业务代码只面对 aplay_log,平台相关的输出实现留在 aplay_osal_log。 Linux 和 macOS 的平台实现要用 Quill;Android 和 HarmonyOS 则各自调用系统日志。这样一来,协议、播放器、渲染器都不需要知道平台日志头文件在哪里,也不该直接链接平台日志模块。 依赖图本来应该很干净: …
Tags
给日志模块整理依赖时,目标很朴素:业务代码只面对 aplay_log,平台相关的输出实现留在 aplay_osal_log。 Linux 和 macOS 的平台实现要用 Quill;Android 和 HarmonyOS 则各自调用系统日志。这样一来,协议、播放器、渲染器都不需要知道平台日志头文件在哪里,也不该直接链接平台日志模块。 依赖图本来应该很干净: …
一、问题背景 APlay 的 C++ SDK 通过一层 Android.mk 风格的 CMakeHelper 来组织模块。业务侧不用直接写 add_library()、target_link_libraries(),而是用 LOCAL_MODULE、LOCAL_INTERFACE_LIBRARIES、LOCAL_OBJECT_LIBRARIES 这类变量描述…
一、为什么要再封一层 CMake CMake 很强,但刚开始接触时也很容易写乱。 比如我们想做一件很普通的事:写一个 hello object library,再写一个 basic_hello_world 可执行程序去使用它。原生 CMake 可能会这样写: add_library(hello OBJECT hello/src/hello.cpp) targ…