を使用してタイトルが私の目的を説明し、私はそれを実装しようと遭遇したさまざまな問題アウト話す:HOWTO:TFS - CMakeListsを通じてLIBSのビルド> - - > C/C++ソースファイルをチェックアウト> Androidのメーカー
-
を
- AndroidスタジオでTFSプロジェクトをチェックアウトするTFVCプラグインはそれほど難しいことではありませんが、Androidアプリケーションのモジュールとしてネイティブコードプロジェクトをインポートすることはできません。私はsettings.gradleと新しいモジュールで成功を収めようとしました。
- 私はチェックアウトしたパスにリンクしているcmakelists.txtを使ってネイティブ(C)ライブラリを構築しました。しかし、依存関係は100%正しく設定されていないようです。私はすべてのファイルをコンパイラのためにうまく含めることができますが、ビルドすると次のエラーメッセージが表示されます: "'File_a.h' not found"。ディレクトリ:
AndroidStudioProjects
|
+ My_Android_Application
|
+ TFVC_Workspace
|
+ Lib_a
| |
| - File_a.h
| - File_b.h
| - File_b。C
| Lib_a
に応じて
+ Lib_b |
- File_c.h
- File_c.c
- File_d.h
からFile_d.c - thisガイドに従って別のCMakeLists.txtを使用しようとしましたが、私のTFSファイルはAndroidスタジオのCMakeListsのサブディレクトリに保存されていないので、私は立ち往生しました。
私は一緒にすべてのレンガをもたらすことができないと私は私のハングアップの脳にtheresの(少しだけ)の混乱を考える - そのためにあなたの助けがエラー、間違ったアプローチ、壊れたデザインを把握するために、などは非常にされます感謝!
P.S.悪いディレクトリツリーのために申し訳ありません - それをより良くすることができませんでした。ファイル/構造に関するさらに詳しい情報が必要な場合は、私に教えてください!
がCMakeLists.txt(Cにあります:/ユーザー// AndroidStudioProjects/Android_Project /アプリ)
cmake_minimum_required(VERSION 3.4.1)
set(TFC_Path C:/Users/<user>/AndroidStudioProjects/TFVC/)
add_library(TFC_Lib_a
SHARED
${TFC_Path}/Lib_a/File_a.h
${TFC_Path}/Lib_a/File_b.c
)
target_include_directories(TFC_Lib_a PUBLIC ${TFC_Path}/Interface_headers)
add_library(TFC_Lib_b
SHARED
${TFC_Path}/Lib_b/File_c.c
${TFC_Path}/Lib_b/File_d.c
)
#since not all headers are automatically included, though File_a.h was listed in add_library(Lib_a), but Lib_b needs that header i am adding following line:
target_include_directories(TFC_Lib_a PUBLIC ${TFC_Path}/Lib_a)
target_link_libraries(applications_jni TFC_Lib_b)
target_link_libraries(TFC_Lib_b TFC_Lib_a)
更新 私は、コンパイラが文句を言っていないLib_aでFile_a.hが含まいけない場合は、ヘッダーはtarget_include_directoriesで見つかりますが、Lib_aが見つからないというエラーが発生したためです。残っている!
**正確**のエラーメッセージをしてください。いくつかのライブラリがあり、多くはディレクトリをインクルードするので、 'file.hが見つからないというエラーの説明は役に立たない。エラーメッセージから**正確なソースファイル**がコンパイルに失敗し、**正確なヘッダファイル**が見つからないことがわかるはずです。 'CMakeLists.txt'には、これらのソースファイルとヘッダーファイルのトレースも提供されます:*ライブラリ*は与えられたソースファイルを使用し、インクルードディレクトリ*は与えられたヘッダファイルを含みます。 – Tsyvarev
'set(TFC_Path C:/ Users//AndroidStudioProjects/TFVC /)はあなたの問題の一つです。ビルドを実行するユーザーについて何も想定することはできません。あなたのソリューションは、それよりも確かなものでなければなりません。 –
@Tsyvarevいつも何かが恋しいことを書く時:私は木を更新し、見つからなかったファイルを指定しました - それは今よりはっきりするはずです:) –