web-dev-qa-db-fra.com

Comment pointer cmake vers un répertoire spécifique pour la bibliothèque?

J'ai un projet CMake dans lequel j'utilise une bibliothèque et je souhaite maintenant tester mon code avec une version différente de cette bibliothèque. Je peux définir INCLUDE_DIRECTORIES (et éventuellement plus tard, la liaison) dans l'exemple ci-dessous. Mais comme je ne veux le faire que temporairement, j'aimerais définir manuellement ce chemin avec ccmake/cmake-gui.

Comment puis-je faire cela?

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})
16
Unapiedra

Cela devrait être possible en définissant la variable CMAKE_PREFIX_PATH lors de la configuration de votre construction. Dans votre répertoire de projet, générez un répertoire test_build et exécutez:

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

Si vous définissez la variable CMAKE_PREFIX_PATH, la commande find_package(OpenCV REQUIRED) choisit votre installation OpenCV dans /home/me/src/opencv et définit les variables OpenCV_LIBS et OpenCV_INCLUDE_DIR en conséquence.

Vous pouvez également éditer un fichier CMakeCache.txt d'un répertoire de construction existant avec l'éditeur d'interface graphique CMake et y ajouter la définition CMAKE_PREFIX_PATH. Vous devez alors reconfigurer votre projet. 

24
sakra

L'utilisation de config dans find_package limitera le chemin de recherche à OpenCV_DIR. Ceci utilisera la config cmake générée par opencv lors de la compilation pour configurer les chemins à inclure et les bibliothèques

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