【问题标题】:Use SQLite with biicode将 SQLite 与 biicode 一起使用
【发布时间】:2015-02-21 10:53:52
【问题描述】:

到目前为止,我已经能够使用 biicode 成功使用 boost、谷物和 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 自动将这些文件添加到我的项目中?

【问题讨论】:

    标签: sqlite biicode


    【解决方案1】:

    有几个问题。您刚刚在 [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
    

    不要担心“警告”消息说 biicode 正在忽略 sqlite3.c 文件,因为它已被硬编码到块 CMakeLists.txt 中以捕获此文件;)

    注意:你应该用双引号而不是&lt;&gt;写你的外部#includes,因为最后一个引用系统标头并且biicode可能使用一些系统dep,你没意识到。

    【讨论】:

    • sqlite/sqlite 解决方案无效,但使用 fenix/sqlite 解决了问题,谢谢!
    猜你喜欢
    • 2011-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多