到目前为止,我已经成功地使用了boost,谷物和gtest,使用了biicode,但是我在sqlite上遇到了麻烦。我试着用它做以下工作:
#include <sqlite3.h>因此,我编辑了我的biicode.conf以包括这些行,包括标题的修改:
[requirements]
sqlite/sqlite:9
[includes]
sqlite.h: sqlite/sqlite/sqlite3/sqlite3.h但是,当我试图调用bii :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自动地将这些文件添加到我的项目中呢?
发布于 2015-02-21 11:57:08
有几个问题。您只是在[includes]节sqlite.h中编写,而不是sqlite3.h,您应该只写前缀sqlite/sqlite/sqlite3,而不是完整的依赖项名称。
然后,你可以这样解决它:
[requirements]
sqlite/sqlite: 9
[includes]
sqlite3.h: sqlite/sqlite/sqlite3[requirements]
fenix/sqlite: 0
[includes]
sqlite3.h: fenix/sqlite不要担心“警告”消息,它说biicode忽略sqlite3.c文件,因为它被重新编码到块CMakeLists.txt中以捕获这个文件;)
注意到:您应该用双引号而不是<>来编写外部#includes,因为最后一个引用的是系统头,而biicode可能使用的是一些系统dep,但您没有意识到这一点。
https://stackoverflow.com/questions/28644907
复制相似问题