web-dev-qa-db-ja.com

ライブラリの特定のディレクトリでcmakeを指す方法は?

ライブラリを使用しているCMakeプロジェクトがあり、そのライブラリの別のバージョンでコードをテストしたいと思います。以下の例では、INCLUDE_DIRECTORIES(およびおそらく後でリンクも)を設定できます。しかし、これは一時的に行いたいだけなので、ccmake/cmake-guiを使用してこのパスを手動で設定したいと思います。

どうすればよいですか?

project(min_example)
cmake_minimum_required(VERSION 2.8)

find_package(OpenCV REQUIRED)
# Without the following line please:
INCLUDE_DIRECTORIES("/home/me/src/opencv/install/include")
add_executable(min_example main.cpp)
target_link_libraries(min_example ${OpenCV_LIBS})
21
Unapiedra

これは、ビルドの構成時に_CMAKE_PREFIX_PATH_変数を設定することで可能になります。プロジェクトディレクトリで_test_build_ディレクトリを生成して実行します。

_mkdir test_build
cd test_build
cmake -DCMAKE_PREFIX_PATH=/home/me/src/opencv/install ..
_

_CMAKE_PREFIX_PATH_変数を設定すると、find_package(OpenCV REQUIRED)コマンドがOpenCVインストールを_/home/me/src/opencv_で選択し、それに応じて_OpenCV_LIBS_および_OpenCV_INCLUDE_DIR_変数を設定します。

または、CMake GUIエディターで既存のビルドディレクトリの_CMakeCache.txt_ファイルを編集し、そこに_CMAKE_PREFIX_PATH_定義を追加することもできます。その後、プロジェクトを再構成する必要があります。

25
sakra

Find_packageでconfigを使用すると、検索パスがOpenCV_DIRに制限されます。これは、ビルド時にopencvが生成するcmake構成を使用して、includeおよびlibsへのパスをセットアップします

set(OpenCV_DIR "<cusompath>" CACHE PATH '' ${SHOULD_FORCE_CACHE})
find_package(OpenCV REQUIRED CONFIG)
0
r11