2012-04-02 17 views
5

Ho problemi a includere un test in un progetto cmake. Il mio progetto è impostato come questo:cmake compresi i file h da altre directory

         TerrainMap 
             / \ 
         PointAccumulator  heightQuadGrid 
               \ 
               Test 

Nella Directory TerrainMap il file CMakeLists.txt delinea semplicemente la versione CMake il nome del progetto e comprende le due sottodirectory.

Nel heightQuadGrid il CMakeLists.txt assomiglia a questo:

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) 

che a quanto ho capito rende una libreria chiamata heightQuadGrid. Il CMakeLists.txt in Test si presenta così:

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}) 

E infine il file cpp heightQuadGridTest.cpp ha questo includono:

#include <heightQuadGrid/heightQuadGrid.h> 

Il cmake funziona correttamente, ma quando vado a rendere il progetto racconta me che non riesce a trovare heightQuadGrid/heightQuadGrid.h

Qual è l'accordo come ho visto un approccio molto simile in un altro progetto?

risposta

3
#include <heightQuadGrid/heightQuadGrid.h> 

Questa sintassi indica che uno dei "comprendono le directory" per il progetto dovrebbe essere la directory di sopra del heightQuadGrid dir. Nel file CMakeLists.txt per il heightQuadTreeTest eseguibile, è necessario salire due directory, e aggiungere che, come una directory comprendono:

include_directories(../../) 
+0

No io non la penso così, per me questo significa che sto cercando di ottenere heightQuadGrid.h dalla libreria heightQuadGrid che ho collegato in modo appropriato. –

+1

Correggetemi se ho torto (non ho la vostra struttura di directory sulla mia macchina) ma "linking appropriatamente" dice al * linker * dove cercare ... le directory di inclusione dicono al * compilatore * dove cercare. – tmpearce

+0

Ok, penso di capire cosa intendi, ma dovrei includere 2 directory o solo una in cui heightQuadGrid.h è? E poi come lo includo nel mio file cpp, come ho fatto? –

Problemi correlati