windows平台 cmake release版本进行debug

目录标题

  • 背景
  • 需求
  • 问题
  • 解决
  • cmake 设置

背景

项目中,通过ExternalProject_Add引入的一些第三方库。

需求

项目debug时,不需要第三方库的debug版本,只要主source debug,而第三方库release优化拉满。

问题

linux 平台下允许这种方式,release和debug 混用。
windows平台exe与dll 存在限制,不能release与debug混用。但是我们软件对于一些导入第三方的库没有debug需求,而统一debug导致第三方库运行速度慢,反而影响整体软件的调试。

那windows平台 有没有一种在release下而又可以debug呢,还真有。

解决

VS 如何在Release模式下进行调试?
文章如上,release只要关闭优化加上debug info就可以类似debug模式进行调试了,类似gcc里面 -O0 -g

cmake 设置

将上面设置,翻译cmake配置,分一下几步

  1. vs multi-config,只允许生成release,避免别人选debug,导致无法生成的问题(ExternalProject_Add 写死 release),和linux区分下
  2. 添加 option 使能debug
  3. 根据option 加上compile_options和link_options,主要/Zi /Od /DEBUG
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC")
    set(CMAKE_CONFIGURATION_TYPES  "Release" CACHE STRING "CONFIGURATION_TYPES" FORCE)  
    option(ENABLE_DEBUG         "ENABLE_DEBUG "                            OFF)
    if(ENABLE_DEBUG)
        add_compile_options(
            /Zi    // 调试信息格式 vs调试必须
            /Od   //类似gcc -O0
        )
        add_link_options(/DEBUG  )   //生成调试信息   类似 -g
    endif()
endif()

你可能感兴趣的:(C\C++,cmake,cmake,visual,studio)