2012-04-02 42 views
5

Tôi đang gặp sự cố bao gồm thử nghiệm theo dự án cmake. dự án của tôi được đặt ra như thế này:cmake bao gồm h tệp từ các thư mục khác

         TerrainMap 
             / \ 
         PointAccumulator  heightQuadGrid 
               \ 
               Test 

Trong TerrainMap thư mục tập tin CMakeLists.txt chỉ đơn giản là vạch ra các phiên bản cmake tên dự án và bao gồm hai thư mục phụ.

Trong heightQuadGrid các CMakeLists.txt trông như thế này:

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) 

mà như tôi hiểu làm cho một thư viện gọi heightQuadGrid. Các CMakeLists.txt trong thử nghiệm trông như thế này:

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

Và cuối cùng là tập tin cpp heightQuadGridTest.cpp này đã bao gồm:

#include <heightQuadGrid/heightQuadGrid.h> 

các cmake hoạt động chính xác nhưng khi tôi đi để làm cho dự án nó nói tôi rằng nó không thể tìm thấy heightQuadGrid/heightQuadGrid.h

Làm thế nào thỏa thuận như tôi đã thấy một cách tiếp cận rất giống nhau trong một dự án làm việc khác?

Trả lời

3
#include <heightQuadGrid/heightQuadGrid.h> 

Cú pháp này chỉ ra rằng một trong "thư mục bao gồm" cho dự án phải là thư mục phía trên heightQuadGrid dir. Trong tập tin cmakelists.txt cho heightQuadTreeTest thực thi, bạn cần phải đi lên hai thư mục, và thêm rằng khi một thư mục bao gồm:

include_directories(../../) 
+0

Không, tôi không nghĩ vậy, với tôi điều này cho thấy tôi đang cố gắng để có được heightQuadGrid.h từ thư viện heightQuadGrid mà tôi đã liên kết một cách thích hợp. –

+1

Sửa lỗi nếu tôi sai (Tôi không có cấu trúc thư mục trên máy tính của tôi) nhưng "liên kết thích hợp" cho trình liên kết * biết vị trí ... các thư mục bao gồm cho trình biên dịch * xem. – tmpearce

+0

Ok Tôi nghĩ rằng tôi hiểu ý bạn là gì, nhưng tôi có cần phải đưa 2 thư mục lên hay chỉ một nơi chiều caoQuadGrid.h là? Và sau đó làm thế nào để tôi bao gồm nó trong tập tin cpp của tôi, cách tôi đã làm? –

Các vấn đề liên quan