2017-10-02 1 views
0

Il est la commande standard CMake:find_package() - utiliser la version plus ancienne si elle est disponible, utilisez autre version plus récente

find_package(OpenCV REQUIRED) 

Lorsque les deux v2 et v3 sont installés, v3 sera choisi.

Maintenant, en raison de divers problèmes, je veux utiliser OpenCV v2 si disponible, mais sinon, passer à OpenCV v3. Malheureusement, ce n'est pas un mot-clé valide:

find_package(OpenCV 2 AT_LEAST) 

Une solution pourrait être:

find_package(OpenCV 2 REQUIRED) 
if (NOT OpenCV_FOUND) 
    find_package(OpenCV 3 REQUIRED) 
endif() 

est-il une meilleure façon?

+1

Dans la solution la première 'find_package()' appel doit être ** sans ** * * REQUISE mot-clé, sinon l'absence de OpenCV2 sera traitée par CMake comme une erreur . Quant à "meilleure façon", je ne connais personne. Votre solution actuelle me semble bonne. – Tsyvarev

Répondre

2

Certains en fonction de votre solution

find_package(OpenCV 2 EXACT QUIET) 
if (NOT OpenCV_FOUND) 
    message(STATUS "OpenCV v2 not found. Trying to find OpenCV v3") 
    find_package(OpenCV 3 REQUIRED) 
endif()