如何在RelWithDebInfo模式下构建依赖OpenCV 3.4.0的项目?
没问题,我帮你把这份CMake配置整理得更规范,同时完美适配RelWithDebInfo模式的构建需求。先看调整后的完整配置:
project(reconstructor) cmake_minimum_required(VERSION 3.1) # 禁止CMake自动重新生成构建文件,避免不必要的重复配置 set(CMAKE_SUPPRESS_REGENERATION true) # 强制指定构建类型为RelWithDebInfo(带调试信息的优化版本) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Build type" FORCE) # Boost 依赖配置 set(Boost_INCLUDE_DIR "c:/boost_1_66_0") set(Boost_LIBRARY_DIR "C:/boost_1_66_0/lib64-msvc-14.0") # 通过find_package更规范地引入Boost,替代单纯的路径设置 find_package(Boost REQUIRED) include_directories(${Boost_INCLUDE_DIR}) link_directories(${Boost_LIBRARY_DIR}) # OpenCV 3.4.0 依赖配置(锁定版本避免匹配错误) set(OpenCV_DIR "C:/opencv-3.4.0/build") find_package(OpenCV 3.4.0 EXACT COMPONENTS core imgproc highgui aruco optflow REQUIRED) # 引入各个子模块 add_subdirectory(prepare_folder) add_subdirectory(draw_signal) add_subdirectory(epipolar_reconstructor) add_subdirectory(test_detection) # 补全你截断的子目录名称,可根据实际情况修改
几个关键的调整说明:
- 强制RelWithDebInfo模式:通过
CMAKE_BUILD_TYPE的设置,确保构建出来的二进制是带调试符号的优化版本,既保留了调试能力,又不会像Debug模式那样性能损失严重,非常适合开发阶段的调试和性能验证。 - 优化Boost依赖处理:原配置只设置了路径,我补充了
find_package(Boost REQUIRED),让CMake自动处理Boost的依赖逻辑,比硬编码路径更可靠,也方便后续移植到其他环境。 - 锁定OpenCV版本:在
find_package里加上3.4.0 EXACT,可以避免CMake误匹配到系统中其他版本的OpenCV,确保项目严格依赖你指定的3.4.0版本。 - 代码可读性优化:添加了必要的注释,调整了代码缩进,让整个CMake配置逻辑更清晰,后续维护起来更方便。
内容的提问来源于stack exchange,提问作者Stepan Yakovenko
相关产品推荐
相关产品推荐

