2014-06-28 4 views
5

Est-il possible de faire en sorte que CMake rassemble toutes les bibliothèques de paquets utilisées lors de la compilation, récupère récursivement leurs bibliothèques requises, puis les place toutes dans un seul répertoire? Par exemple, si mon application nécessite gtk, elle récupèrerait glib et les librairies nécessaires libiconv, gettext et libffi.CMake déployer les bibliothèques requises

+2

Je ne pense pas que CMake a, mais vous pouvez écrire un script qui marche récursive dans toutes les dépendances en utilisant 'ldd' et copie découvert bibliothèques dans votre répertoire (et l'appeler de CMake) – szx

+1

D'un point de vue général, CMake fournit les outils pour tester si les bibliothèques nécessaires sont disponibles pour la construction, collecter les emplacements de la bibliothèque et obtenir les informations cflags et ldflags nécessaires pour qu'une compilation multi-fichiers/répertoires puisse aboutir. Dans les fichiers CMakeLists.txt et autres, vous avez la liberté d'utiliser des commandes de type script pour déplacer les données vers les répertoires désirés afin de créer une mise en page plus efficace. –

+0

Je ne sais pas pourquoi cela a été voté .. question intéressante. :) Ce que vous voulez ne fait pas partie de la fonctionnalité principale de CMake (AFAIK), mais vous pouvez écrire un script qui fait cela. Pourquoi ne pas simplement générer un paquet natif au lieu de stocker des dépendances? – wojciii

Répondre

2

Vous pouvez utiliser le module CMake GetPrerequesites. Voir here pour plus d'informations

+0

J'avais utilisé la méthode ldd et i686-w64-mingw32-objdump, mais ce module rend la vie un peu plus facile et fonctionne sur toutes les plates-formes. Merci pour le tuyau. –

Questions connexes