J'utilise actuellement CMake pour construire un projet, et j'ai le problème suivant:CMake reconnaissance d'en-tête:
J'ai une bibliothèque, dire « C », que les fichiers pour un exécutable « L » doivent use (les fichiers de l'appel L sur les en-têtes de la bibliothèque en C)
La bibliothèque et l'exécutable doivent tous deux être construits dans le même projet, et bien qu'ils passent tous les deux par CMake, les fichiers dans L ne peuvent pas semblent voir les en-têtes fournis par la bibliothèque C. Je dois spécifier des chemins relatifs à la destination exacte dans les fichiers d'en-tête, ce qui n'est pas bien du tout puisque la hiérarchie des fichiers pourrait changer à un moment donné.
Je ne suis pas sûr de ce type d'une commande à utiliser pour rendre les fichiers L directement être en mesure de voir les en-têtes C, afin que je puisse dire quelque chose comme
#include "display.h"
directement dans L. I ne veulent pas avoir à copier les en-têtes dans tous les sens depuis que j'ai beaucoup de fichiers comme L.
Mes fichiers cMake sont indiqués:
pour la bibliothèque C (qui est plus proche de la partie supérieure du dossier hiérarchie):
FIND_PACKAGE(VTK REQUIRED)
IF(NOT VTK_USE_RENDERING)
MESSAGE(FATAL_ERROR "Example ${PROJECT_NAME} requires VTK_USE_RENDERING.")
ENDIF(NOT VTK_USE_RENDERING)
INCLUDE(${VTK_USE_FILE})
#INCLUDE_DIRECTORIES(${CRANIOLIB_SOURCE_DIR}/include)
SET(cranioDir ${CMAKE_CURRENT_SOURCE_DIR})
SET(SOURCES
twoD.cxx
display.cxx
rotate.cxx
symmetry.cxx
normalize.cxx
real_sym_eigens.cxx
debugLib.cxx
readInputLib.cxx)
SET(cranioLib_INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/include)
ADD_LIBRARY(cranioLib ${SOURCES})
et pour l'exécutable L:
FIND_PACKAGE(VTK REQUIRED)
IF(NOT VTK_USE_RENDERING)
MESSAGE(FATAL_ERROR "Example ${PROJECT_NAME} requires VTK_USE_RENDERING.")
ENDIF(NOT VTK_USE_RENDERING)
INCLUDE(${VTK_USE_FILE})
INCLUDE_DIRECTORIES(${cranioDir})
ADD_EXECUTABLE(RotateSS RotateSideToSide.cxx)
TARGET_LINK_LIBRARIES(RotateSS vtkRendering cranioLib vtkHybrid vtkGraphics)
ADD_EXECUTABLE(RotateST RotateSideTwist.cxx)
TARGET_LINK_LIBRARIES(RotateST vtkRendering cranioLib vtkHybrid vtkGraphics)
ADD_EXECUTABLE(RotateUD RotateUpDown.cxx)
TARGET_LINK_LIBRARIES(RotateUD vtkRendering cranioLib vtkHybrid vtkGraphics)
Notez que ces fichiers ne sont pas tout à fait faire le travail - j'ai besoin d'aide pour clouer les caractéristiques include de CMake, n'a pas été en mesure d'obtenir rien d'autre en ligne qui ferait l'affaire pour moi.
Meilleur.
S'il vous plaît utiliser le bouton de code ou en retrait chaque ligne de code 4 places donc il va formater la source correctement. – greyfade