私は自分のプロジェクトの依存関係としてGoogleのFlatBuffersを構築しており、ビルド時にはスキーマをコンパイルする必要があります。私はBuildFlatBuffers.cmake
またはFindFlatBuffers.cmake
を使用したくないのですが、私は特定のバージョンを使用しているため、ローカルにインストールされているため信頼できません。ExternalProjectで定義されたターゲットの出力パスを取得するには?
これは私のCMakeLists.txt
の簡易版である:それはメイクや忍者のために正常に動作しますが、Debug
ディレクトリにflatc
を構築するXcodeの、に失敗し
ExternalProject_Add (
flatbuf
URL "https://github.com/google/flatbuffers/archive/v1.8.0.tar.gz"
CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
)
add_custom_target (
flatbuf_schema
PREFIX ${FLATBUF_PREFIX}
DEPENDS flatbuf
COMMAND ${FLATBUF_PREFIX}/src/flatbuf-build/flatc --cpp ${FLATBUF_SCHEMA}
)
。
私は、これらの可能な解決策について考えた:私は${FLATBUFFERS_FLATC_EXECUTABLE}
または$<TARGET_FILE:flatc>
を使用できるように
- は
add_subdirectory
の代わりExternalProject_Add
を使用します。 flatbuf
にはRUNTIME_OUTPUT_DIRECTORY
を手動で割り当てます。flatc
を複数のパスで検索します(ポータブルではありませんが、ビルド時にそれを実現する方法もわかりません)。
私は(2)と(3)を試みましたが、成功しませんでした。 (1)については、それが良い考えであるかどうかはわかりません。どのようにして移植可能な方法でスキーマを構築できますか?
である必要があります。Xcodeの問題点は不明です。あなたが本当に立ち往生した場合にできることの1つは、https://github.com/google/fplbaseの機能をチェックすることです。これはFlatBuffersにも依存し、少なくともXcodeを含めてすべてのプラットフォームで同じように構築していました。 – Aardappel
Xcodeの問題点は、flatcを 'flatbuf-build /'にする代わりに 'flatbuf-build/Build /'に入るということです。 –
*外部プロジェクトをビルドするだけでなく、**インストールします。プロジェクトがインストールレイアウトを完全に定義すると、ビルドツール(あなたのケースではXCode)はそれを変更しません。 – Tsyvarev