cmake包括来自其他目录的h文件

时间:2012-04-02 23:42:47

标签: c++ cmake

我在cmake项目下进行测试时遇到问题。我的项目如下:

                                       TerrainMap
                                        /     \
                         PointAccumulator     heightQuadGrid
                                                \
                                                 Test

在TerrainMap目录中,CMakeLists.txt文件只是概述了项目名称的cmake版本,并包含两个子目录。

在heightQuadGrid中,CMakeLists.txt如下所示:

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)

据我所知,它创建了一个名为heightQuadGrid的库。 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工作正常但是当我去制作项目时它告诉我它找不到heightQuadGrid / heightQuadGrid.h

这笔交易是什么,因为我在另一个工作项目中看到过非常类似的方法?

1 个答案:

答案 0 :(得分:3)

#include <heightQuadGrid/heightQuadGrid.h>

此语法表示项目的“包含目录”之一应该是heightQuadGrid目录上方的目录。在heightQuadTreeTest可执行文件的cmakelists.txt文件中,您需要上升两个目录,并将其添加为包含目录:

include_directories(../../)