ソースパッケージに付属しているOpenCVサンプルをビルドしようとしていますが、次のようになります。
CMake Error at CMakeLists.txt:10 (ocv_check_dependencies):
Unknown CMake command "ocv_check_dependencies".
OpenCVを使用してインストールしました
cmake .
make
Sudo make install
チュートリアルスニペットが機能するようになりました(したがって、ライブラリとして正しくインストールされていると思います)。ただし、サンプルのコンパイルは機能しません。
どういうわけかCMakeを「ocv_check_dependencies」を持つように構成する必要があると思いますが、どうすればよいでしょうか。迷っています!
わかった。
サンプルをビルドするには、-D
を介して提供することにより、cmakeのデフォルト構成を変更する必要があります。私が間違っていたのは、samples
ディレクトリ内からcmakeを実行しようとしたことです。
サンプルをビルドする適切な方法は、そのようにcmakeを呼び出すことです(解凍されたアーカイブのルートディレクトリ内から):
cmake -DBUILD_SAMPLES .
サンプルがオンになります。 make、make installthanを使用して続行できます。サンプルは、ビルド後にbin
にあります。
実際、OpenCV 2.4.4ベータ版の場合、ルートCMakeList.txtファイルには次のように書かれています。
OCV_OPTION(BUILD_EXAMPLES "すべての例を作成する"
-DBUILD_EXAMPLES=ON
私にとってはうまくいきました。
OpenCVサンプルコードをコンパイルする方法は?
# For OpenCV 3
cd /path/to/opencv/samples/cpp/
#Compile
g++ -ggdb `pkg-config --cflags --libs opencv` facedetect.cpp -o facedetect
#run
./facedetect
私のために働きます。
エラーメッセージのコンテキスト:
CMake Error at CMakeLists.txt:10 (ocv_check_dependencies):
Unknown CMake command "ocv_check_dependencies".
このエラーメッセージは、cmakeがocv_check_dependencies
の定義を見つけることができないために発生します
それがコンソールが言った理由です不明なCMakeコマンド
Cmakeがocv_check_dependencies
が定義されている場所を見つけられない場合
@Nick HockingsSaidのように:
ocv_check_dependencies
は、Your/OpenCV/path/OpenCVModule.cmake
で定義されたマクロです。
macro(ocv_check_dependencies)
set(OCV_DEPENDENCIES_FOUND TRUE)
foreach(d ${ARGN})
if(d MATCHES "^opencv_[^ ]+$" AND NOT HAVE_${d})
set(OCV_DEPENDENCIES_FOUND FALSE)
break()
endif()
endforeach()
endmacro()
最速の方法は、上のこのスニペットを、CMakeList.txt
が存在するすぐ上のocv_check_dependencies
ファイルにコピーすることです。
したがって、cmakeは最終的にそれが何であるかを理解することができます
それでうまくいくはずです。将来、他の誰もこの質問に煩わされないことを願っています。
マクロ「ocv_check_dependencies」は次の場所で定義されています:your_path_to/opencv/cmake/OpenCVModule.cmake
# ensures that all passed modules are available
# sets OCV_DEPENDENCIES_FOUND variable to TRUE/FALSE
macro(ocv_check_dependencies)
set(OCV_DEPENDENCIES_FOUND TRUE)
foreach(d ${ARGN})
if(d MATCHES "^opencv_[^ ]+$" AND NOT HAVE_${d})
set(OCV_DEPENDENCIES_FOUND FALSE)
break()
endif()
endforeach()
endmacro()
トップレベルのCMakeLists.txtには、opencv/cmake /のファイルに対する「include」コマンドが含まれています。これが、opencvソースのルートからcmakeを呼び出してコンパイルするときにマクロを使用できる理由です。
mydragonislandのビルド手順はほとんど私のために機能しました。マイナーな並べ替えとアクセントを含む:
g++ facedetect.cpp -o facedetect `pkg-config --libs opencv`
次の手順は私のために働きます。
ツールチェーンパスをエクスポートします。
cd opencv-3.3.0/samples
cross_cmake && cross_make
cd opencv-3.3.0/samples/cpp /
同様のエラーが発生しました。私のアプローチは次のとおりです:1)cd xxx/samples 2)mkdir build 3)cd build 4)cmake .. 5)makeこれで動作します。ソースファイルの下に個々のプロジェクトを構築することはできませんでした。