如何编译不含示例与测试应用的ObjectBox库及功能建议
编译ObjectBox仅保留核心库(排除示例与测试)
本地源码编译实现步骤
- 克隆ObjectBox仓库后,在CMake配置阶段传入以下参数,直接禁用示例和测试模块:
cmake -S . -B build -DOBJECTBOX_BUILD_EXAMPLES=OFF -DOBJECTBOX_BUILD_TESTS=OFF - 执行构建命令完成核心库编译:
此时构建过程只会生成ObjectBox核心库文件,不会编译任何示例或测试程序。cmake --build build
FetchContent集成场景的处理方案
如果通过CMake的FetchContent拉取源码集成,需在FetchContent_MakeAvailable调用前强制覆盖ObjectBox的默认配置:
FetchContent_Declare( objectbox GIT_REPOSITORY https://github.com/objectbox/objectbox-c.git GIT_TAG <指定目标版本号> ) # 强制关闭示例与测试构建 set(OBJECTBOX_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) set(OBJECTBOX_BUILD_TESTS OFF CACHE BOOL "" FORCE) FetchContent_MakeAvailable(objectbox)
通过FORCE参数确保ObjectBox自身的默认配置被覆盖,避免示例和测试模块被触发构建。
关于优化FetchContent集成体验的建议
目前FetchContent_MakeAvailable是CMake提供的通用命令,无法直接添加特定于ObjectBox的配置选项,但可以从两个方向优化:
- ObjectBox侧CMake配置优化:建议默认关闭示例和测试的构建开关,让用户按需手动开启;或者提供一个
OBJECTBOX_BUILD_ALL统一开关,默认设为OFF,用户可通过开启该开关同时启用示例和测试模块。 - 项目侧封装自定义宏:在自己的项目中封装一个专用宏,内置禁用示例和测试的逻辑,简化配置步骤:
后续只需调用这个自定义宏,就能快速完成无示例的ObjectBox集成。macro(FetchContent_MakeAvailable_ObjectBox) set(OBJECTBOX_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) set(OBJECTBOX_BUILD_TESTS OFF CACHE BOOL "" FORCE) FetchContent_MakeAvailable(objectbox) endmacro()
内容的提问来源于stack exchange,提问作者Ignatius Lijo
相关产品推荐
相关产品推荐

