2010-09-18 6 views
13

Dans CMake, je n'arrive pas à sortir ma bibliothèque dans ../out/library, seule la bibliothèque. Quand je fais le chemin ../out/library, il me dit qu'il ne peut pas trouver la bibliothèque, comme si elle voulait s'y lier.Répertoire personnalisé pour la sortie de la bibliothèque CMake

add_library(../out/JE3D ../source/CDeviceLayerSDL.cpp) 

Il y a plus de fichiers, je fais juste économiser de l'espace. Quand je fais cela, j'ai cette erreur.

Lier bibliothèque statique CXX lib ../ out/JE3D.a /usr/bin/ar: lib ../ out/JE3D.a: Aucun fichier ou répertoire make [2]: * [lib ../ out/JE3D.a] Erreur 1 make [1]: * [CMakeFiles /../ out/JE3D.dir/all] Erreur 2 make: *** [tous] Erreur 2

+0

a besoin de plus d'informations. Des fragments de votre CMakeLists.txt et couper & passé de votre message d'erreur aideraient. –

+0

Très bien, j'ai ajouté plus d'informations. – Jookia

Répondre

25

La propriété cible LIBRARY_OUTPUT_DIRECTORY spécifie le répertoire dans lequel seront créés les fichiers cibles de la bibliothèque.

set_target_properties(JE3D PROPERTIES 
     LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/out/library) 

Si toutes les bibliothèques sont dans un répertoire, je trouve plus commode de définir la variable CMAKE_LIBRARY_OUTPUT_DIRECTORY, qui est utilisé pour initialiser la propriété LIBRARY_OUTPUT_DIRECTORY lors de la création d'une cible.

set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/out/library) 

Edit: Vérifiez commentaires si votre cible est une bibliothèque statique

+1

La raison pour laquelle vous ne pouvez pas utiliser les composants de chemin dans le nom de la bibliothèque est que CMake gère ce nom de façon simpliste pour obtenir le nom de la bibliothèque. Sur votre hôte, il utilise le modèle 'lib $ {FILE} .a', qui ne fonctionne pas lorsque vous essayez d'utiliser un chemin. –

+0

Ah, je comprends! – Jookia

+21

LIBRARY_OUTPUT_DIRECTORY ne fonctionne pas pour moi. Selon la documentation, cette propriété contrôle le répertoire de sortie pour les bibliothèques partagées. Les bibliothèques statiques sont contrôlées par la propriété ARCHIVE_OUTPUT_DIRECTORY. – Jarlaxle

Questions connexes