Envoyé par
Kamikaze
Z'avez un outil sympa de gestion de dépendance en c++? J'ai un projet A, je veux référencer un projet B (sans re compiler, just link), pour l'instant je fais ça "à la main" en choppant l'include (.h) et la shared library (.so). Idéalement un truc qui s'intègre bien avec CMake.
Je comprends pas bien.
C'est pas ce qui se passe quand tu fais:
Code:
find_package(VTK REQUIRED)
include(${VTK_USE_FILE})
Ca va ajouter les chemins d'include et de link sans compiler la sous-bibliothèque (cf pourquoi avec le fichier .cmake à la fin).
Il faut juste qu'elle ait été elle-même compilée avec CMake et qu'elle dispose d'un .cmake, ce qui est le cas standard.
Tu peux aussi préciser, avec des mots clés, le répertoire exact où se trouve la lib que tu veux. Ou, au pire, la racine à partir de laquelle chercher la lib:
Code:
find_package(VTK REQUIRED
PATHS /home/vectra/SDK/vtk/ NO_DEFAULT_PATH)
C'est quand-même commode pour travailler sur un projet avec une autre version d'une lib 'standard', qui elle fait partie des dépendances d'autres paquets debian. Ca shunte la recherche qui va, par défaut, renvoyer la lib installée au niveau du système.
Un exemple de fichier myvtk-config.cmake, que j'ai rajouté à la racine d'une sous-lib perso pour faciliter l'usage de VTK:
Code:
get_filename_component(SELF_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
set(myvtk_INCLUDE_DIRS ${SELF_DIR}/include )
set(myvtk_LIBRARY_DIRS "${SELF_DIR}/lib")
set(myvtk_LIBRARIES "vtk_util")
SET(myvtk_EXECUTABLE_DIRS "${SELF_DIR}/bin")
# chmod 755 plz
include_directories( ${myvtk_INCLUDE_DIRS} )
link_directories( ${myvtk_LIBRARY_DIRS} )
C'est peut-être la palisse pour certains (et rempli d'erreurs, j'en doute pas) mais moi je tatonne encore beaucoup avec CMake.
Perso, je n'ai pas de procédure d'installation de prête pour mes projets Cmake: je les clone à un endroit commun, je les compile sur place, et ils s'appellent entre eux. Ca m'oblige à mettre 'en dur' un chemin de recherche par contre.