CMake: Add Pangolin to disparity project

Answered using AI by Vibe Coding

Code Question:

cmake_minimum_required(VERSION 3.10) project(disparity)

添加可执行文件

add_executable(main disparity.cpp)

find_package(OpenCV REQUIRED)

find_package(Eigen3 REQUIRED)

直接使用变量而不是目标

include_directories(${OpenCV_INCLUDE_DIRS}) include_directories(${EIGEN3_INCLUDE_DIRS}) target_link_libraries(main ${OpenCV_LIBS} ) 再添加#include <pangolin/pangolin.h> #include <unistd.h>

Code Solution:

要让 pangolin 在 CMake 中正确链接并使用,你需要在 CMakeLists.txt 中添加对 Pangolin 的查找和链接。下面是更新后的 CMakeLists.txt,包括你新增的 #include <pangolin/pangolin.h>#include <unistd.h> 所需的依赖配置:

cmake_minimum_required(VERSION 3.10)
project(disparity)

# 添加可执行文件
add_executable(main disparity.cpp)

# 查找 OpenCV
find_package(OpenCV REQUIRED)

# 查找 Eigen3
find_package(Eigen3 REQUIRED)

# 查找 Pangolin
find_package(Pangolin REQUIRED)

# 包含头文件目录
include_directories(${OpenCV_INCLUDE_DIRS})
include_directories(${EIGEN3_INCLUDE_DIRS})
include_directories(${Pangolin_INCLUDE_DIRS})

# 链接库
target_link_libraries(main ${OpenCV_LIBS} ${Pangolin_LIBRARIES})

注意事项:

  1. 确保你已安装 Pangolin

    • Ubuntu 下可以使用:
      sudo apt install libpangolin-dev
      
    • 或者从源码编译 Pangolin(推荐较新版本):
      git clone https://github.com/stevenlovegrove/Pangolin.git
      cd Pangolin
      mkdir build && cd build
      cmake ..
      make -j$(nproc)
      sudo make install
      
  2. <unistd.h> 是 POSIX 标准头文件,通常不需要额外链接库,Linux/macOS 下直接可用。

  3. 如果你使用的是较新版本的 Pangolin(>= 0.6),find_package(Pangolin REQUIRED) 会自动设置 Pangolin::pangolin 目标,推荐使用现代 CMake 方式:

target_link_libraries(main ${OpenCV_LIBS} Pangolin::pangolin)

你可以根据实际 Pangolin 版本选择是否使用 Pangolin_LIBRARIESPangolin::pangolin