2012-05-12 4 views
3

J'utilise cmake-gui essayer de construire OpenCV mais obtenir cette erreur:erreur CMake lors de la configuration OpenCV

CMake Error at cmake/OpenCVGenConfig.cmake:134 (math): 
    math cannot parse the expression: "8 * ": syntax error, unexpected $end, 
    expecting exp_OPENPARENT or exp_NUMBER (4) 
Call Stack (most recent call first): 
    CMakeLists.txt:649 (include) 

Ceci est ma première expérience avec CMake donc je ne sais pas où se tourner. J'ai regardé le fichier OpenCVGenConfig.cmake mais je suis clueless au sujet de sa syntaxe. J'ai tout balancé, j'ai téléchargé l'archive tar à nouveau, mais j'ai toujours la même erreur. Il ne semble donc pas qu'il s'agisse d'une faute de frappe/erreur dans le fichier OpenCVGenConfig.cmake mais dans le traitement de la commande "math". Je n'arrive pas à trouver quoi que ce soit concernant une commande "math" dans la documentation de Cmake.

Des idées?

-Andres

+0

Quelle version de CMake utilisez-vous? Vérifiez que vous exécutez la version la plus récente (actuellement 2.8) pour créer la version actuelle d'OpenCV. Bien que les docs disent qu'une version antérieure est correcte, certaines erreurs peuvent apparaître sur <2.8. – gavinb

Répondre

9

Il semble que la ligne en question est

math(EXPR SIZEOF_VOID_P_BITS "8 * ${CMAKE_SIZEOF_VOID_P}") 

Le problème semble être que ${CMAKE_SIZEOF_VOID_P} est unset quand il doit indiquer la taille d'un pointeur en octets. Il doit être défini lors de l'appel de la commande project à proximité du début du CMakeLists.txt de niveau supérieur.

Je ne sais pas pourquoi cela n'est pas défini, il peut même s'agir d'un bug dans CMake. Vous pouvez essayer d'utiliser le latest version of CMake (actuellement 2.8.8) si ce n'est déjà fait. En outre, exécuter CMake à partir de la ligne de commande peut faire la différence (il ne devrait pas, mais vous ne savez jamais).

Si cela n'a pas aidé, le mieux est de demander conseil sur le CMake mailing list.

En tant que dernier recours, vous pouvez définir la valeur appropriée pour CMAKE_SIZEOF_VOID_P sur votre machine en ajoutant

if(NOT CMAKE_SIZEOF_VOID_P) 
    set(CMAKE_SIZEOF_VOID_P 4) # replace 4 with 8 for 64-bit machine 
    endif() 

à cmake/OpenCVGenConfig.cmake juste avant la ligne 134 où l'appel math est fait. C'est un hack horrible et je ne le recommande certainement pas, mais il pourrait vous permettre de construire OpenCV tandis que cherchant une réponse correcte sur la liste de diffusion.


Vous pouvez obtenir des informations sur la commande math en exécutant

cmake --help-command math 

et CMAKE_SIZEOF_VOID_P en exécutant

cmake --help-variable CMAKE_SIZEOF_VOID_P 
+0

je vous remercie pour votre réponse et vos suggestions. Je vais tous les essayer. –

+1

Très bonne réponse! – LiMuBei

Questions connexes