到目前为止,我已经能够使用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})
但我发现here和here的两个示例似乎没有向include目录添加任何内容,甚至连链接文件夹也没有。我想sqlite必须用你的源代码编译,那么如何让biicode自动将这些文件添加到我的项目中呢?
答案 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并且你没有意识到它。