如何使用 CMake 将外部库添加到 'self-made' 库?

How do you add external libraries to 'self-made' libraries using CMake?

我无法 link 外部库与我使用 CMake 编写的库。我想知道是否需要将某些内容添加到我的 CMakeLists.txt 中?或者,如果我需要在较低级别(在 src 内)添加另一个 CMakeLists.txt,那需要包含什么?

我有以下项目结构:

ProjectFolder
│   ├── CMakeLists.txt
│   ├── build
│   │   └── 
│   ├── include
│   │   └── helper.h
│   └── src
│       ├── helper.cpp
        └── main.cpp

我的CMakeList.txt是:

cmake_minimum_required(VERSION 2.6 FATAL_ERROR)

project(object_detection)

find_package(PCL 1.5 REQUIRED)
find_package(OpenCV REQUIRED)


file(GLOB SOURCES src/*.cpp)
file(GLOB INCLUDE include/*.h)

include_directories(${PCL_INCLUDE_DIRS} ${INCLUDE})
link_directories(${PROJECT_NAME} ${PCL_LIBRARY_DIRS} ${SOURCES} )
add_definitions(${PCL_DEFINITIONS})


add_executable (${PROJECT_NAME} src/main.cpp)
target_link_libraries (${PROJECT_NAME}  ${OpenCV_LIBS} ${PCL_LIBRARIES} ${SOURCES})

在我的文件中 helper.cpp 我有:

#include <pcl/io/pcd_io.h>

给出错误:

fatal error: 'pcl/io/pcd_io.h' file not found
#include <pcl/io/pcd_io.h>
         ^~~~~~~~~~~~~~~~~

但是我在 main.cpp 中有相同的包含,没有错误。

非常感谢任何帮助,如果我需要澄清我的问题或错误,请告诉我。 谢谢。

CMakeLists.txt 中存在多个错误,其中包含以下更改项目加载适当的库并正确构建。另一个注意事项是,之前,要包括 helper.h 我需要写: #include "../include/helper.h".
现在它可以按预期使用 #include "helper.h"。 这是修改后的 CMakeLists.txt:

cmake_minimum_required(VERSION 2.6 FATAL_ERROR)

project(object_detection)

find_package(PCL 1.5 REQUIRED)
find_package(OpenCV REQUIRED)


file(GLOB SRC_FILES ${PROJECT_SOURCE_DIR}/src/*.cpp)


include_directories(${PCL_INCLUDE_DIRS} include)
link_directories(${PROJECT_NAME} ${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})


#add_executable (${PROJECT_NAME} src/helper.cpp src/main.cpp )
add_executable (${PROJECT_NAME} ${SRC_FILES} )

target_link_libraries (object_detection ${PCL_LIBRARIES} ${OpenCV_LIBS})