vcpkg + libodb


前言

虽然操作数据库持久层c++不是c++擅长的领域,但是c++也有一些orm库,之前用过轻量级的sqlite-orm, 今天试试重量级libodb


一、配置方法

依旧是使用vcpkg的manifest配置。
命令行输入: vcpkg add port libodb-sqlite, 输入后vcpkg.json自动添加了该库(当然自己在这文件里输入库名是一样的)。保存下cmakelists.txt, 开始自动下载源码编译。

二、Link failure

1.find_package

错误写法:
find_package(odb CONFIG REQUIRED)
target_link_libraries(main PRIVATE odb::libodb-sqlite)

之前一直向上面这样链接库,没有出现这种错误,我很确信是写错了,因为使用绝对路径直接链接库是可以构建项目的。
网上搜索了一阵没发现,然后去vcpkg 项目下的issue搜索一下果然有人遇到一样的错误。
vcpkg libodb Link failure
要明确指定使用的components。
具体有哪些components可以看share文件夹下该库的.cmake文件

add_compile_definitions(DATABASE_SQLITE)
find_package(odb CONFIG REQUIRED COMPONENTS libodb sqlite )
target_link_libraries(${PROJECT_NAME} PUBLIC odb::libodb odb::libodb-sqlite)

2.编译

编译examples里的项目发现不能直接编译。xxx-odb.hxx xxx-odb.cxx是没有的,libodb是通过预编译生成额外文件的方式来映射的。官网下载预编译器odb-2.4.0-i686-windows
使用方法就不额外介绍了,网上资料很多,编译选项
c++xx 的选项为 --std c++xx


总结

很重的一个orm库,学习成本高, 还是其他语言来搞吧

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值