2017-09-26 11 views
2

J'ai un projet pour lequel vous pouvez ou ne pouvez pas construire l'interface graphique si l'utilisateur le souhaite. C'est une bibliothèque optionnelle.Cmake fichier de configuration lorsque les bibliothèques optionnelles sont construites

J'essaie de créer un fichier de configuration Cmake pour l'installation et je ne sais pas s'il y a une façon intelligente de le savoir et d'adapter le fichier pour cela. Pour l'instant je:

set(MYPROG_INCLUDE_DIRS @[email protected]/include/myprog) 

foreach(lib feature geometry gui sensors sensorstream utils) 
    list(APPEND MYPROG_LIBRARIES @[email protected]/lib/libmyprog_${lib}.so) 
endforeach() 

Mais le moment je construis l'IUG, ce fichier donne MYPROG_LIBRARY lien vers IUG aussi, même si elle n'a pas été construit. Je pensais à séparer les deux comme dans:

set(MYPROG_INCLUDE_DIRS @[email protected]/include/myprog) 

foreach(lib feature geometry sensors sensorstream utils) 
    list(APPEND MYPROG_LIBRARIES @[email protected]/lib/libmyprog_${lib}.so) 
endforeach() 

set(MYPROG_LIBRARIES_GUI [email protected]/lib/libmyprog_gui.so) 

Mais je dois maintenant différents appels à faire pour obtenir toutes les bibliothèques si je construit l'IUG.

Dans mon Cmake j'ai BUILD_GUI mis à 0 si je ne peux pas construire l'interface graphique. Est-il possible de l'utiliser?

Répondre

2

Vous pouvez construire votre liste de composants, puis le mettre dans le fichier de configuration:

set(COMPONENTS lib feature geometry sensors sensorstream utils) 
if(BUILD_GUI) 
    list(APPEND COMPONENTS gui) 
endif() 

Et dans le fichier de configuration

foreach(lib @[email protected]) 
    list(APPEND MYPROG_LIBRARIES @[email protected]/lib/libmyprog_${lib}.so) 
endforeach() 
+0

devrait probablement être 'foreach (COMPOSANTS lib @ @)', Oui? – legalize

+0

Droit, corrigé, merci. – arrowd