相关疑难解决方法(0)

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

我在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

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

c++ cmake

5
推荐指数
1
解决办法
9984
查看次数

如何在CMake中分离头文件和源文件?

我的项目结构如下:

--root: main.cpp CMakeLists.txt 

    --src: function.cpp CMakeLists.txt 

    --include: function.h
Run Code Online (Sandbox Code Playgroud)

main.cpp:

#include <iostream>
#include "function.h"
using namespace std;

int main(int argc, char *argv[])
{
    //call module in function.hpp
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

根目录中的CMakeLists.txt:

 project(t1)
 cmake_minimum_required(VERSION 2.8)
 add_subdirectory(src)               
 file(GLOB_RECURSE SOURCES
     include/function.h
     src/function.cpp)            
 add_executable(${PROJECT_NAME} ${SOURCES})
Run Code Online (Sandbox Code Playgroud)

src目录中的CmakeLists.txt:

include_directories(${PROJECT_SOURCE_DIR}/include)
Run Code Online (Sandbox Code Playgroud)

如何在根目录和src目录中编写CMakelists以实现功能的单独实现?更进一步,如何在主叫它们。CMake中的可能解决方案在include_directories中找不到正确的头文件/ include文件。但这仍然与我的情况不符。

c++ cmake

5
推荐指数
1
解决办法
4633
查看次数

标签 统计

c++ ×2

cmake ×2