1

これまでのところ、biicode を使用してブースト、シリアル、および 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 は追加のインクルード ディレクトリを追加していないようです。たとえば、ブーストの場合、次を追加する必要がありました。

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})

しかし、ここここで見つけた 2 つの例では、includes ディレクトリに何も追加されていないようで、リンク フォルダーも追加されていません。sqlite をソースと共にコンパイルする必要があると思いますが、biicode でこれらのファイルをプロジェクトに自動的に追加するにはどうすればよいですか?

4

1 に答える 1

2

いくつかの問題があります。の代わりに[includes]セクションに書いたばかりで、完全な依存関係名の代わりに接頭辞、後でのみ書く必要があります。sqlite.hsqlite3.hsqlite/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 ファイルを無視していることを示す "WARN" メッセージについて心配する必要はありません。

: external#includesは の代わりに二重引用符で記述する必要があります。<>最後のものはシステム ヘッダーを参照し、biicode はいくつかのシステム deps を使用している可能性があり、それを認識していない可能性があるためです。

于 2015-02-21T11:57:08.280 に答える