1

到目前为止,我已经能够使用 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 的调用来自模板函数。

我看过这个例子,但 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})

但是我在这里这里找到的两个示例似乎没有向包含目录添加任何内容,甚至没有添加任何链接文件夹。我想 sqlite 必须用你的源代码编译,所以我如何让 biicode 自动将这些文件添加到我的项目中?

4

1 回答 1

2

有几个问题。你只是写在[includes]sectionsqlite.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

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

注意#includes:您应该用双引号而不是 来编写您的外部's <>,因为最后一个引用系统标头,并且 biicode 可能正在使用某些系统部门,而您没有意识到这一点。

于 2015-02-21T11:57:08.280 回答