2012-04-02 21 views
5

Tengo problemas para incluir una prueba en un proyecto de cmake. Mi proyecto se establece así:cmake incluyendo h archivos de otros directorios

         TerrainMap 
             / \ 
         PointAccumulator  heightQuadGrid 
               \ 
               Test 

en el directorio TerrainMap el archivo CMakeLists.txt simplemente esboza la versión cmake el nombre del proyecto e incluye los dos subdirectorios.

En heightQuadGrid la CMakeLists.txt se parece a esto:

cmake_minimum_required(VERSION 2.8) 

find_package(PCL 1.2 REQUIRED) 
find_package(OpenCV REQUIRED) 

include_directories(${PCL_INCLUDE_DIRS}) 
link_directories(${PCL_LIBRARY_DIRS}) 
add_definitions(${PCL_DEFINITIONS}) 

add_library(heightQuadGrid heightQuadGrid.cpp) 

add_subdirectory(Test) 

que como he entendido hace una biblioteca llamada heightQuadGrid. El CMakeLists.txt en la prueba es el siguiente:

FIND_PACKAGE(PCL 1.2 REQUIRED) 
FIND_PACKAGE(OpenCV REQUIRED) 
FIND_PACKAGE(Boost COMPONENTS unit_test_framework REQUIRED) 

include_directories(${PCL_INCLUDE_DIRS}) 
link_directories(${PCL_LIBRARY_DIRS}) 
add_definitions(${PCL_DEFINITIONS}) 

link_libraries(heightQuadGrid) 

add_executable(heightQuadTreeTest heightQuadGridTest.cpp) 
target_link_libraries (heightQuadTreeTest heightQuadGrid ${PCL_LIBRARIES} ${OpenCV_LIBS} ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY}) 

Y finalmente el archivo CPP ha heightQuadGridTest.cpp esto incluyen:

#include <heightQuadGrid/heightQuadGrid.h> 

el cmake funciona correctamente, pero cuando voy a hacer que el proyecto se dice me que no puede encontrar heightQuadGrid/heightQuadGrid.h

¿Cuál es el problema ya que he visto un enfoque muy similar en otro proyecto de trabajo?

Respuesta

3
#include <heightQuadGrid/heightQuadGrid.h> 

Esta sintaxis indica que uno de los "incluyen directorios" para el proyecto debe ser el directorio por encima de la heightQuadGrid dir. En el archivo CMakeLists.txt para la heightQuadTreeTest ejecutable, es necesario subir dos niveles, y añadir que como un directorio incluir:

include_directories(../../) 
+0

No, no me lo creo, me indica que estoy tratando de conseguir heightQuadGrid.h de la biblioteca heightQuadGrid que he vinculado apropiadamente. –

+1

Corrija si estoy equivocado (no tengo su estructura de directorio en mi máquina) pero "vincular apropiadamente" le dice al * vinculador * dónde buscar ... los directorios de inclusión le dicen al * compilador * dónde buscar. – tmpearce

+0

Ok, creo que entiendo lo que quieres decir, pero ¿necesitaría incluir 2 directorios o solo uno en donde heightQuadGrid.h es? ¿Y luego cómo lo incluyo en mi archivo cpp, de la forma en que lo hice? –

Cuestiones relacionadas