🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

SLAM

SLAMとは、自己位置推定とマッピングを同時に実行することを指し、自律移動するロボットなどに利用されています。センサーで周囲を把握し形状のデータに基づき自己位置を推定。修正を行いながら地図作成できる技術です。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

3472閲覧

SLAM入門の実行ファイルが生成されない

退会済みユーザー

退会済みユーザー

総合スコア0

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

SLAM

SLAMとは、自己位置推定とマッピングを同時に実行することを指し、自律移動するロボットなどに利用されています。センサーで周囲を把握し形状のデータに基づき自己位置を推定。修正を行いながら地図作成できる技術です。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2019/10/09 02:46

編集2019/10/11 13:28

前提・実現したいこと

趣味でSLAM入門という本を読んでいて、https://github.com/furo-org/LittleSLAM/blob/master/doc/install-win.mdにあるように付属のデータセットを試したいと思っています。

発生している問題・エラーメッセージ

CMakeでconfigureすると図のような画面になります。この後Generateすると"C:\Scho\LittleSLAM\build"の下にLittleSLAM.slnができます。そしてこれをVisualStudioでソリューションのビルドをしてもReleaseフォルダができるだけで実行ファイルは生成されません。
Eigen3が発見されない事が問題ですが、解決できなくて困っています。

該当のソースコード

C++

試したこと

ダウンロードしてきたものを展開したフォルダです
イメージ説明
以下はSLAM関係のものを纏めたフォルダです。
イメージ説明
Little SLAM下のテキストファイルにEigenのフォルダを指定している画面です。この書き方はhttps://www.ipa.go.jp/security/awareness/vendor/programmingv1/b08_01.htmlを参照しました。
イメージ説明
CMakeでconfigureすると以下のようになってしまいます。
イメージ説明
以下はCMakeのメッセージです。
Selecting Windows SDK version 10.0.18362.0 to target Windows 10.0.17134.
The C compiler identification is MSVC 19.23.28106.4
The CXX compiler identification is MSVC 19.23.28106.4
Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.23.28105/bin/Hostx64/x64/cl.exe
Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.23.28105/bin/Hostx64/x64/cl.exe -- works
Detecting C compiler ABI info
Detecting C compiler ABI info - done
Detecting C compile features
Detecting C compile features - done
Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.23.28105/bin/Hostx64/x64/cl.exe
Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.23.28105/bin/Hostx64/x64/cl.exe -- works
Detecting CXX compiler ABI info
Detecting CXX compiler ABI info - done
Detecting CXX compile features
Detecting CXX compile features - done
Found Boost: C:/Scho/boost_1_71_0 (found version "1.71.0")
CMake Warning at cui/CMakeLists.txt:7 (find_package):
By not providing "FindEigen3.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "Eigen3", but
CMake did not find one.

Could not find a package configuration file provided by "Eigen3" with any
of the following names:

Eigen3Config.cmake eigen3-config.cmake

Add the installation prefix of "Eigen3" to CMAKE_PREFIX_PATH or set
"Eigen3_DIR" to a directory containing one of the above files. If "Eigen3"
provides a separate development package or SDK, be sure it has been
installed.

CMake Warning at framework/CMakeLists.txt:7 (find_package):
By not providing "FindEigen3.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "Eigen3", but
CMake did not find one.

Could not find a package configuration file provided by "Eigen3" with any
of the following names:

Eigen3Config.cmake eigen3-config.cmake

Add the installation prefix of "Eigen3" to CMAKE_PREFIX_PATH or set
"Eigen3_DIR" to a directory containing one of the above files. If "Eigen3"
provides a separate development package or SDK, be sure it has been
installed.

CMake Warning at hook/CMakeLists.txt:7 (find_package):
By not providing "FindEigen3.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "Eigen3", but
CMake did not find one.

Could not find a package configuration file provided by "Eigen3" with any
of the following names:

Eigen3Config.cmake eigen3-config.cmake

Add the installation prefix of "Eigen3" to CMAKE_PREFIX_PATH or set
"Eigen3_DIR" to a directory containing one of the above files. If "Eigen3"
provides a separate development package or SDK, be sure it has been
installed.

Configuring done

補足情報(FW/ツールのバージョンなど)

Windows10です

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tiitoi

2019/10/09 06:40

実行ファイルが生成されないということは、なにかコンパイルエラー等が発生してビルドが完了していないということはないでしょうか?
退会済みユーザー

退会済みユーザー

2019/10/10 02:01

1>------ ビルド開始: プロジェクト: framework, 構成: Release x64 ------ 1>MyUtil.cpp 1>Pose2D.cpp 1>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 1>Scan2D.cpp 1>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 1>ScanPointResampler.cpp 1>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 1>ScanPointAnalyser.cpp 1>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 1>PoseEstimatorICP.cpp 1>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 1>C:\Users\ユーザー名\Desktop\趣味関係\boost_1_71_0\boost/timer.hpp(21): message : This header is deprecated. Use the facilities in <boost/timer/timer.hpp> instead. 1>PoseGraph.cpp 1>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 1>P2oDriver2D.cpp 1>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 1>ScanMatcher2D.cpp 1>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 1>PoseFuser.cpp 1>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 1>CovarianceCalculator.cpp 1>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 1>NNGridTable.cpp 1>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 1>SensorDataReader.cpp 1>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 1>SlamFrontEnd.cpp 1>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 1>SlamBackEnd.cpp 1>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 1>LoopDetector.cpp 1>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 1>コードを生成中... 1>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 1>プロジェクト "framework.vcxproj" のビルドが終了しました -- 失敗。 2>------ ビルド開始: プロジェクト: hook, 構成: Release x64 ------ 2>RefScanMakerBS.cpp 2>RefScanMakerLM.cpp 2>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 2>CostFunctionED.cpp 2>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 2>CostFunctionPD.cpp 2>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 2>PoseOptimizerSD.cpp 2>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 2>PoseOptimizerSL.cpp 2>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 2>DataAssociatorLS.cpp 2>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 2>C:\Users\ユーザー名\Desktop\趣味関係\boost_1_71_0\boost/timer.hpp(21): message : This header is deprecated. Use the facilities in <boost/timer/timer.hpp> instead. 2>DataAssociatorGT.cpp 2>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 2>C:\Users\ユーザー名\Desktop\趣味関係\boost_1_71_0\boost/timer.hpp(21): message : This header is deprecated. Use the facilities in <boost/timer/timer.hpp> instead. 2>PointCloudMapBS.cpp 2>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 2>PointCloudMapGT.cpp 2>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 2>PointCloudMapLP.cpp 2>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 2>LoopDetectorSS.cpp 2>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 2>コードを生成中... 2>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 2>プロジェクト "hook.vcxproj" のビルドが終了しました -- 失敗。 3>------ ビルド開始: プロジェクト: LittleSLAM, 構成: Release x64 ------ 3>main.cpp 3>SlamLauncher.cpp 3>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 3>C:\Users\ユーザー名\Desktop\趣味関係\boost_1_71_0\boost/timer.hpp(21): message : This header is deprecated. Use the facilities in <boost/timer/timer.hpp> instead. 3>FrameworkCustomizer.cpp 3>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 3>MapDrawer.cpp 3>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\cui\..\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 3>コードを生成中... 3>C:\Users\ユーザー名\Desktop\趣味関係\LittleSLAM\cui\..\framework\MyUtil.h(19,10): fatal error C1083: include ファイルを開けません。'Eigen/Core':No such file or directory 3>プロジェクト "LittleSLAM.vcxproj" のビルドが終了しました -- 失敗。 ========== ビルド: 0 正常終了、3 失敗、1 更新不要、0 スキップ ========== 以上のように表示されます。 申し訳ないのですが私は初学者であり、コンパイルの意味は調べて理解したのですがコンパイルエラーはどこを見たら良いのか分かりません。よろしければ教えていただけますでしょうか。 もしかしてCMakeでのconfigureなどの段階でエラーが生じているのでしょうか 無知で申し訳ありません
tiitoi

2019/10/10 04:23 編集

質問欄は編集できますので、エラーが長くなる場合は質問欄に記載したほうが見通しがよくなると思います。 エラーについてですが、Eigen という数値計算ライブラリが見つからないのが原因です。通常、これは自分でインストールする必要があるものですが、書籍には環境構築の方法について記載はなかったのでしょうか。
退会済みユーザー

退会済みユーザー

2019/10/10 08:08

詳しい説明ありがとうございます。 Eigenはダウンロードして解凍、および指定をしているのですが同様のエラーが出てしまうという状況です。 もう一度初めからやりなおしてみます
tiitoi

2019/10/10 08:22

最初からやり直すのがいいと思います。 あと `C:\Users\ユーザー名\Desktop\趣味関係` のようにパスに日本語が含まれるとトラブルが起こる可能性があるので、フォルダ名は英語にしてパスに日本語が含まれないようにしたほうがよいかもしれません。
guest

回答1

0

ベストアンサー

実際、ダウンロードして試してみました。
LittleSLAM/CMakeLists.txt を開いて、include ディレクトリに Eigen のパスを追加したところ、ビルドが通りましたよ

CMakeLists.txt に以下の1行を追加 (パスは適宜変更)

cpp

1include_directories("F:\libraries\eigen")

パスは Eigen をダウンロードして解凍したらでてくるフォルダを指定してだくさい。(doc, Eigen, failtest, ... などがあるディレクトリ)
Windows のパスの円マークは \ でエスケープする必要があります。


原因について

インクルードディレクトリ:
ヘッダーファイルをインクルードしたときに探すディレクトリ
例えば、#include <Eigen/Core> としたときに Eigen ライブラリの場所がインクルードディレクトリに登録されていれば、
コンパイラがそこを基準に Eigen/Core というファイルを見つけてくれます。

今回、#include <Eigen/Core> でビルドエラーになっていますが、Eigen ライブラリの場所がインクルードディレクトリに登録されていないのが原因です。

この作業は CMake 内で行うようになってますが、CMake の find_package(Eigen3) が失敗しているため、結果的にコンパイルエラーにつながっていると思われます。

環境変数等がちゃんと設定してあれば、find_package(Eigen3) で Eigen ライブラリの場所を自動的に見つけられるはずなので、Eigen ライブラリをダウンロードしたあとの環境変数が正しく登録できていないのだと思います。

なので、代替案として include_directories() で Eigen の場所を直接指定する解決方法について回答で提示しました。
find_package(Eigen3) は依然として失敗しているので画像のような warning は出ますが、include_directories で直接追加したなら大丈夫です。

投稿2019/10/11 06:03

編集2019/10/11 14:10
tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/10/11 13:31

お時間割いていただきありがとうございます。 本当に申し訳ないのですが解決には至りませんでした。スクリーンショットを追加しましたので、よろしければお力を貸していただけませんでしょうか。
tiitoi

2019/10/11 14:28 編集

CMake についてはどのくらいわかりますでしょうか? 「Configuring done」となっているので、ビルドの設定は完了しています。 「Configuring done」が表示されたら「generate」をクリックすると、sln が作成されます。 warning なのでそれは無視して、作成された *.sln を開いて、ビルドできませんか? 原因については回答に追記しました。
退会済みユーザー

退会済みユーザー

2019/10/12 03:34

問題解決を手伝っていただき、本当にありがとうございました。 自分の環境変数の設定ミスが原因でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問