我在cmake项目下进行测试时遇到了麻烦.我的项目是这样的:
TerrainMap
/ \
PointAccumulator heightQuadGrid
\
Test
Run Code Online (Sandbox Code Playgroud)
在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)
Run Code Online (Sandbox Code Playgroud)
据我所知,它创建了一个名为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})
Run Code Online (Sandbox Code Playgroud)
最后cpp文件heightQuadGridTest.cpp包括:
#include <heightQuadGrid/heightQuadGrid.h>
Run Code Online (Sandbox Code Playgroud)
cmake工作正常但是当我去制作项目时它告诉我它找不到heightQuadGrid/heightQuadGrid.h
什么是交易,因为我在另一个工作项目中看到了非常类似的方法?
#include <heightQuadGrid/heightQuadGrid.h>
Run Code Online (Sandbox Code Playgroud)
此语法表示项目的“包含目录”之一应该是目录上方的heightQuadGrid目录。在heightQuadTreeTest可执行文件的 cmakelists.txt 文件中,您需要进入两个目录,并将其添加为包含目录:
include_directories(../../)
Run Code Online (Sandbox Code Playgroud)