sqlite - 将SQLite与biicode一起使用

标签 sqlite biicode

到目前为止,我已经能够使用biicode成功使用boost,grain和gtest,但是我在使用sqlite时遇到了麻烦。我正在尝试使用它执行以下操作:

#include <sqlite3.h>


因此,我编辑了biicode.conf以包含这些行,包括标题的别名:

[requirements]
    sqlite/sqlite:9
[includes]
    sqlite.h: sqlite/sqlite/sqlite3/sqlite3.h


但是当我尝试调用bii cpp:build时,它会执行以下操作

WARN: Removing unused reference to "sqlite/sqlite: 9" from myuser/test "requirements"


然后我得到了预期的结果:

database_impl.cpp:(.text+0x516): undefined reference to `sqlite3_exec'


出乎意料的是,即使sqlite3.h显然没有包括在内,编译也成功完成了,但这也许是因为对sqlite的调用来自模板函数。

我看过example,但是CMakeList.txt似乎没有添加任何其他包含目录。例如,对于boost,我必须添加:

SET(Boost_USE_STATIC_LIBS OFF)
bii_find_boost(COMPONENTS chrono system filesystem log thread REQUIRED)

target_include_directories(${BII_BLOCK_TARGET} INTERFACE ${Boost_INCLUDE_DIRS})
target_link_libraries(${BII_BLOCK_TARGET} INTERFACE ${Boost_LIBRARIES})


但是我发现的两个示例herehere似乎都没有向包含目录添加任何内容,甚至没有向链接文件夹添加任何内容。我认为sqlite必须与您的源一起编译,那么如何使biicode自动将这些文件添加到我的项目中?

最佳答案

有几个问题。您只是在[includes]部分的sqlite.h中而不是在sqlite3.h中编写,并且以后应该只写前缀sqlite/sqlite/sqlite3,而不是完整的依赖项名称。

然后,您可以解决此问题:

[requirements]
    sqlite/sqlite: 9
[includes]
    sqlite3.h: sqlite/sqlite/sqlite3


或者,您可以尝试将SQLite版本上传到fenix用户:

[requirements]
    fenix/sqlite: 0
[includes]
    sqlite3.h: fenix/sqlite


不用担心“ WARN”消息说biicode会忽略sqlite3.c文件,因为它被编码到CMakeLists.txt块中以捕获该文件;)

注意:您应该用双引号而不是#includes来写外部<>,因为最后一个引用到系统头,并且biicode可能使用某些系统deps,但您没有意识到。

关于sqlite - 将SQLite与biicode一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28644907/

相关文章:

java - 如何在没有此 ClassNotFoundException 的情况下连接到 Java 中的本地 SQLite?

java - 如何更新和增量数据库?

java - Android SQLite 创建数据库但找不到表

c - 在 biicode 中使用仅 header 库

c++ - biicode.conf 中的 Chaiscript #include 语句映射

c++ - 在 TravisCI 下为 cmake 更改 C++ 编译器

biicode - Biicode 可以发布到本地服务器(在防火墙后面)吗?

Java SQLite execSQL 语法错误

c++ - 与 Travis 一起使用 bii 时要在 gitignore 中放些什么

SQLite 使用 Select 更新同一个表