2012-04-02 7 views
5

cmake 프로젝트에서 테스트를 포함하는 데 문제가 있습니다. 내 프로젝트는 다음과 같이 규정 된 경우 : TerrainMap 디렉토리에서cmake 다른 디렉토리의 h 파일을 포함합니다.

         TerrainMap 
             / \ 
         PointAccumulator  heightQuadGrid 
               \ 
               Test 

은 CMakeLists.txt 파일은 단순히 cmake 버전 프로젝트 이름을 간략하게 설명하고, 두 개의 하위 디렉토리가 포함됩니다.

는 heightQuadGrid에서 CMakeLists.txt은 다음과 같습니다 : 나는 이해가 heightQuadGrid라는 라이브러리를 만드는

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) 

합니다. 시험의 CMakeLists.txt은 다음과 같습니다

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

그리고 마지막으로 CPP 파일을 heightQuadGridTest.cpp이 포함했습니다

#include <heightQuadGrid/heightQuadGrid.h> 

cmake가 제대로 작동하지만 난 프로젝트를 만들어 갈 때 알려줍니다 그게 찾을 수 없다고 생각합니다 .QuadGrid/heightQuadGrid.h

다른 작업 프로젝트에서 비슷한 접근법을 보았습니다.

답변

3
#include <heightQuadGrid/heightQuadGrid.h> 

이 구문 나타냅니다 중 하나를 프로젝트에 대한 heightQuadGrid 디렉토리 위의 디렉토리해야한다 "디렉토리가 포함됩니다." 이 내가 얻기 위해 노력하고 나타냅니다 날에,

include_directories(../../) 
+0

아니, 난 그렇게 생각하지 않아요 다음 heightQuadTreeTest 실행 파일의 cmakelists.txt 파일에서 두 디렉토리를 이동하고 include 디렉토리로 저를 추가 할 필요가 없습니다 라이브러리에있는 heightQuadGrid에서 적절하게 링크 된 heightQuadGrid.h. –

+1

내가 틀렸다면 (필자의 컴퓨터에 디렉토리 구조를 가지고 있지 않다.) "링크를 적절하게 연결한다"는 지시는 * 링커 *가 어디에 있는지를 알려주는 것이다. – tmpearce

+0

좋아, 내가 무슨 뜻인지 이해하지만, 2 디렉토리를 포함하거나 heightQuadGrid.h가있는 위치에 하나만 포함시켜야합니까? 그리고 어떻게해야합니까? 내 cpp 파일에 그것을 어떻게 포함합니까? –

관련 문제