将SQLite与biicode一起使用

时间:2015-02-21 10:53:52

标签: sqlite biicode

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

#include <sqlite3.h>

所以我编辑了我的biicode.conf以包含这些行,包括标题的alising:

[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似乎没有添加任何其他包含目录。例如,对于提升,我必须添加:

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的两个示例似乎没有向include目录添加任何内容,甚至连链接文件夹也没有。我想sqlite必须用你的源代码编译,那么如何让biicode自动将这些文件添加到我的项目中呢?

1 个答案:

答案 0 :(得分:2)

有几个问题。您刚刚在[includes]部分sqlite.h而不是sqlite3.h中撰写了文章,您应该只编写前缀sqlite/sqlite/sqlite3,而不是完整的依赖名称。

然后,你可以解决它:

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

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

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

不要担心警告&#34;&#34;警告&#34;消息,说biicode忽略sqlite3.c文件,因为它被编码到块CMakeLists.txt中以捕获此文件;)

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