0


私は Cmake が初めてで、それを使用してプロジェクトを構築するのは初めてです。以前にこのツールを使用したことがないため、その仕組みについての知識があまりありません。
ArUco ライブラリの実行例を取得しようとしています。しかし、ArUco ライブラリが提供する README では、Cmake を使用してそれらを実行することを提案しています。Windows 8.1 と Visual Studio 2013 を使用しており、 Cmake3.4.0 もダウンロードしてインストールしました。
インストール後、Cmake の例やチュートリアルを検索したところ、cmake を使用してプログラムをコンパイルする方法を示すビデオ チュートリアルがいくつか見つかりました。しかし、同じ手順を実行している間にエラーが発生しました。エラーは表示の通り

フォーラムに投稿されたさまざまな質問を調べましたが、答えが見つかりませんでした。環境変数とパスを設定する必要があるかどうかわかりません。これに関するいくつかの提案は本当に役に立ちます。
助けてくれてありがとう。

エラー:

C コンパイラの ID は MSVC 18.0.40629.0 です
CXX コンパイラの ID は MSVC 18.0.40629.0 です

C コンパイラの動作を確認するには、次を使用します: Visual Studio 12 2013 C
コンパイラの動作を確認するには、次を使用します: Visual Studio 12 2013 -- 動作しますコンパイラー ABI 情報 - 完了 CXX コンパイラーの動作確認: Visual Studio 12 2013 CXX コンパイラーの動作確認: Visual Studio 12 2013 -- 動作 CXX コンパイラー ABI 情報の 検出 CXX コンパイラー ABI 情報の検出 - 完了 CXX コンパイル機能の 検出 CXXコンパイル機能の検出- CMakeLists.txt:5 (find_package) で CMake エラーが発生しました:









CMAKE_MODULE_PATH に "Findaruco.cmake" を指定しないことで、このプロジェクトは
"aruco" が提供するパッケージ構成ファイルを探すように CMake に要求しましたが、
CMake はそれを見つけられませんでした。

「aruco」が提供する次の名前のパッケージ構成ファイルが見つかりませんでした:

arucoConfig.cmake<br/>
aruco-config.cmake<br/>

CMAKE_PREFIX_PATH に「aruco」のインストールプレフィックスを追加するか、上記のファイルのいずれかを含むディレクトリに「aruco_DIR」を設定します。「aruco」が別途開発パッケージやSDKを提供している場合は、インストール済みであることを確認してください。

構成が不完全です。エラーが発生しました!
「E:/../aruco_testproject/build/CMakeFiles/CMakeOutput.log」も参照してください。

4

2 に答える 2

1

Mac でも同じ問題が発生しました。Windows ユーザーもこれが役立つことを願っています。

ほとんどの場合、aruco をインストールしていません。ダウンロードした aruco ソース フォルダー (つまり ~/Downloads/aruco-2.0.14) に移動し、次のコマンドを実行します。 cmake . make make install

その後、aruco_testproject をビルドできるようになり cmake . make ます。

于 2016-12-24T08:26:01.283 に答える
0

実際、何がうまくいかないのかはかなり明確です。CMake は特定のパッケージを見つけることができません。

迅速で汚い解決策

1 つの解決策は、エラー メッセージが示唆することを行うことです。

特定のCMakeLists.txtファイルに移動し、aruco_Dirそのような変数を設定します

set( auruco_Dir /PATH/TO/ARUCO/WHERE/AURUCOCONFIG.CMAKE/IS/LOCATED/AS/WELL )

真の道

より良い方法は、Findaruco.cmakeモジュールを .xml で提供することですCMAKE_MODULE_PATH。これは、CMake のfind_packageメカニズム ( https://cmake.org/cmake/help/v3.0/command/find_package.html、11.12.2015 で最終アクセス) と統合され、どこで見つけることができるかについての中心的なaruco情報を提供するため、モジュールと呼ばれます。あなたのファイルシステムで。(Arucoここでは単なる例です。他のモジュールについても同じことが言えます)

これは何に役立ちますか、なぜfind_packageこれらのモジュールが必要なのですか?

答えは簡単です。管理する中心的な場所は 1 つだけで、多くはありません。パッケージの変更の場所を想像してみてください。CMakeLists.txtこのパッケージを参照するすべてのファイルを修正しますか? 基本的なプログラミングパラダイムのようなもの

  • 繰り返さないで

  • 何もハードコードしないでください

于 2015-12-11T15:26:51.147 に答える