質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
C++

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

Q&A

解決済

2回答

1289閲覧

C++ make Error include path

S.S_Japan

総合スコア14

C++

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

1グッド

0クリップ

投稿2021/05/27 05:23

編集2021/05/27 06:58

前提・実現したいこと

C++のソースコードをmakeするところでエラーメッセージが出てしまい,解決方法が分かりません.

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

saino@DESKTOP-KR80A41:/mnt/d/study_data/libPySeek/example/build$ make [ 50%] Building CXX object CMakeFiles/seek_test_pro.dir/seek_test_pro.o /mnt/d/study_data/libPySeek/example/seek_test_pro.cpp:5:10: fatal error: opencv2/highgui/highgui.hpp: No such file or directory #include <opencv2/highgui/highgui.hpp> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ compilation terminated. CMakeFiles/seek_test_pro.dir/build.make:62: recipe for target 'CMakeFiles/seek_test_pro.dir/seek_test_pro.o' failed make[2]: *** [CMakeFiles/seek_test_pro.dir/seek_test_pro.o] Error 1 CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/seek_test_pro.dir/all' failed make[1]: *** [CMakeFiles/seek_test_pro.dir/all] Error 2 Makefile:83: recipe for target 'all' failed make: *** [all] Error 2

該当のソースコード

/* * Test program SEEK Thermal CompactPRO * Author: Maarten Vandersteegen */ #include <opencv2/highgui/highgui.hpp> #include <thSeekThermalPro.h> #include <iostream> int main() { // Instant object thSeekThermalPro pro; // Init camre if (!pro.seekInit()) { std::cout << "failed to open seek cam" << std::endl; return -1; } else{std::cout << "seek cam init done" << std::endl;} // Get frame while(1) { // Get Gray frame if(pro.seekRead()){ cv::imshow("LWIR",pro.seekGetGrayCvFrame() ); } if( cv::waitKey(10) == 27 ) break; // stop capturing by pressing ESC } } //int main(int argc, char** argv) //{ // LibSeek::SeekThermalPro seek(argc == 2 ? argv[1] : ""); // std::cout<< "argv: "<<argv[1]<<std::endl; // cv::Mat frame, grey_frame; // // if (!seek.open()) { // std::cout << "failed to open seek cam" << std::endl; // return -1; // } // // while(1) { // if (!seek.read(frame)) { // std::cout << "no more LWIR img" << std::endl; // return -1; // } // // cv::normalize(frame, grey_frame, 0, 65535, cv::NORM_MINMAX); // //cv::GaussianBlur(grey_frame, grey_frame, cv::Size(7,7), 0); // // cv::imshow("LWIR", grey_frame); // // char c = cv::waitKey(10); // if (c == 's') { // cv::waitKey(0); // } // } //}

試したこと

インクルードパスの設定が正しくできていないと思い,フォルダ"libPySeek"上に".vscode/c_cpp_properties.json",".vscode/tasks.json"を作成し,以下のように編集しました.またopencv2/highgui/highgui.hppは,フォルダ"C:/opencv/build/include"内にあることを確認しました.

c_cpp_properties.json↓

{ "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**", "C:/opencv/build/include/**" ], "defines": [ "_DEBUG", "UNICODE", "_UNICODE" ], "windowsSdkVersion": "10.0.19041.0", "compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.28.29333/bin/Hostx64/x64/cl.exe", "cStandard": "c17", "cppStandard": "c++17", "intelliSenseMode": "windows-msvc-x64" } ], "version": 4 }

tasks.json↓

{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ { "label": "echo", "type": "shell", "command": "echo Hello", "args": [ "-I", "C:/opencv/build/include/**" ] } ] }

akiruno-oneoneからの回答で,
cmakeで作成したCMakeLists.txt,こちらを変更した方がよいということでしたので,
以下にCmakeLists.txtの内容を表記しておきます.

message (STATUS "OpenCV_INCLUDE_DIRS: ${OpenCV_INCLUDE_DIRS}") message (STATUS "OpenCV_LIBRARIES: ${OpenCV_LIBRARIES}") ## Include directory (header file,.....) include_directories ( ${libPySeek_SOURCE_DIR}/src ${OpenCV_INCLUDE_DIRS} /usr/include/libusb-1.0 ) ## Link libraries link_libraries ( thSeekThermalPro_static #-lboost_program_options ${OpenCV_LIBRARIES} -lusb-1.0 ) ## Target compile file add_executable (seek_test_pro seek_test_pro.cpp) #install (TARGETS # seek_test # seek_test_pro # seek_viewer # seek_create_flat_field # DESTINATION "bin" #)

ソースコードのinclude<opencv2/highgui/highgui.hpp>の箇所をフルパスにした場合の実行結果です(ほぼ同様のエラーとなっています)

saino@DESKTOP-KR80A41:/mnt/d/study_data/libPySeek/example/build$ make Scanning dependencies of target seek_test_pro [ 50%] Building CXX object CMakeFiles/seek_test_pro.dir/seek_test_pro.o /mnt/d/study_data/libPySeek/example/seek_test_pro.cpp:5:10: fatal error: C:/opencv/build/include/opencv2/highgui/highgui.hpp: No such file or directory #include <C:/opencv/build/include/opencv2/highgui/highgui.hpp> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ compilation terminated. CMakeFiles/seek_test_pro.dir/build.make:62: recipe for target 'CMakeFiles/seek_test_pro.dir/seek_test_pro.o' failed make[2]: *** [CMakeFiles/seek_test_pro.dir/seek_test_pro.o] Error 1 CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/seek_test_pro.dir/all' failed make[1]: *** [CMakeFiles/seek_test_pro.dir/all] Error 2 Makefile:83: recipe for target 'all' failed make: *** [all] Error 2

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

OSはWindows10です.VScodeで編集しています.
gccのバージョンは以下のように出力されました.

saino@DESKTOP-KR80A41:/mnt/d/study_data/libPySeek/example/build$ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper OFFLOAD_TARGET_NAMES=nvptx-none OFFLOAD_TARGET_DEFAULT=1 Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 7.5.0-3ubuntu1~18.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
yuki23👍を押しています

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

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

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

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

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

akiruno-oneone

2021/05/27 06:29

error情報をみると、cmakeでmakefileを作成したように見えます。 その場合は、CMakeLists.textを変更する必要があります。 また、windowsのWSL環境でしょうか? その場合、パスは以下にした方が良いと思います。(c:⇒/mnt/c) #include </mnt/c/opencv/build/include/opencv2/highgui/highgui.hpp>
S.S_Japan

2021/05/27 06:54

丁寧に回答ありがとうございます,お礼申し上げます. その通りでcmakeでmakefileを作成しております. (CMakeLists.textの方後で公開しておきます) かなり前にwindowsでLinuxを使用するためにWSL環境を構築した覚えがあり,vscodeのターミナルのカレントディレクトリも/mnt/d/...となっているので,WSL環境で動いていると思います. 今回使用するソースコードは外部から引用してきたものでして,できればソースコードを改変せずに使いたいところではありますが,フルパスで解決するのであれば,akiruno-oneoneさんより提案していただいたパスを使いたいと思います.
akiruno-oneone

2021/05/27 07:39

opencvはどのようにインストールされましたでしょうか、以下を参考にすると、CMakeFile.txtにfind_packageを追加すれば良いように思われます。 [http://www1.meijo-u.ac.jp/~kohara/cms/technicalreport/opencv_cmake] が、opencvをwslのubuntu?からインストールされていないと、find_packageは使えないと思います。 そのときには、自力でinclude_directoriesとtarget_link_librariesに追加する必要があると思います。
S.S_Japan

2021/05/27 08:34

返信ありがとうございます.opencvはanacondaでpipコマンドでインストールしています.もしかするとVScodeでうまく動作しなかったのはopencvがWSL環境においてインストールされていなかったのが原因かもしれないですね.一度anacondaプロンプト上で試してみたいと思います.またCMakeList.txtの中には自身でパスを書き換える箇所があったので,こちらについてはこのソースコードの提供者に問い合わせをしたいと思います.また進展があればこちらにてコメント追加しますね.
guest

回答2

0

ベストアンサー

opencvはanacondaでpipコマンドでインストールしています.

pip でインストールしたものは python のライブラリです。
質問のソースコードは C++ なので関係ありません。
OpenCV をインストールするには例えば

$ sudo apt install libopencv-dev

投稿2021/05/27 10:33

yuki23

総合スコア1448

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

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

guest

0

今回発生したエラーコードについては,WSL環境のアップデートおよび,opencvの導入を行ったことで解決しました.様々なアドバイスをいただきましたことお礼申し上げます.

投稿2021/05/28 05:45

S.S_Japan

総合スコア14

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

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

yuki23

2021/05/29 00:43

私の回答をもとに解決されたのであれば、自己解決ではなくBAをつけていただけないでしょうか。 何の役にも立たなかった、見当外れの回答だったというのであれば諦めますが
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問