cmake

2012-04-02 31 views
5

Bir cmake projesi altında bir test de dahil olmak üzere bir sorun yaşıyorum. Projem böyle belirtilmiştir: TerrainMap İçi Dizincmake

         TerrainMap 
             / \ 
         PointAccumulator  heightQuadGrid 
               \ 
               Test 

CMakeLists.txt dosyası basitçe cmake sürümü proje adı özetliyor ve iki alt dizinleri içerir.

heightQuadGrid yılında CMakeLists.txt şuna benzer: anladığım kadarıyla heightQuadGrid adında bir kütüphane yapar

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) 

. Test CMakeLists.txt şuna benzer:

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

Ve nihayet cpp dosyası heightQuadGridTest.cpp bu dahil etti:

#include <heightQuadGrid/heightQuadGrid.h> 

cmake düzgün çalıştığı ama projeyi yapmaya giderken o söyler bana bulamadıQuadGrid/heightQuadGrid.h

Başka bir çalışma projesinde çok benzer bir yaklaşım olarak gördüğüm anlaşma nedir?

cevap

3
#include <heightQuadGrid/heightQuadGrid.h> 

Bu sözdizimi gösterir bir proje için heightQuadGrid dir yukarıdaki dizin olmalıdır "dizinleri dahil". Bu i almaya çalışıyorum gösterir bana,

include_directories(../../) 
+0

Hayır öyle düşünmüyorum: heightQuadTreeTest yürütülebilir için cmakelists.txt dosyasında, iki dizinleri kadar gitmek ve bir içerme dizin olarak eklemek gerekir uygun şekilde bağlandığım library heightQuadGrid'den heightQuadGrid.h. –

+1

Yanılıyorsam düzeltin (dizin yapınız benim makinemde değil) ancak "uygun şekilde bağlanıyor", * linker * 'in nereye bakılacağını söyler ... dahil dizinleri * derleyicisine * nerede bakılacağını söyler. – tmpearce

+0

Tamam Sanırım ne demek istediğimi anlıyorum, ama 2 dizini eklemeye ihtiyacım var mı yoksa heightQuadGrid.h dosyasının olduğu yer mi? Ve sonra nasıl yaptım, benim cpp dosyasına nasıl ekleyebilirim? –