How to generate pdb files for build Release with cmake flags?

I am creating a visual studio solution using cmake. And now I want to generate pdb files to build Release. (Why? Because I want to have characters in case the user finds an error)

I tried to set the following flags without success:

set(CMAKE_CONFIGURATION_TYPES ${CMAKE_BUILD_TYPE} CACHE STRING "Build Types" FORCE) IF(WIN32) set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/Release") set( CMAKE_EXE_LINKER_FLAGS_RELEASE "/debug /INCREMENTAL") set( CMAKE_SHARED_LINKER_FLAGS_RELEASE "/debug /INCREMENTAL") set( CMAKE_MODULE_LINKER_FLAGS_RELEASE "/debug /INCREMENTAL") set( CMAKE_CXX_FLAGS_RELEASE "/MD /Zi /O2 /Ob1 /D NDEBUG") set( CMAKE_C_FLAGS_RELEASE "/MD /Zi /O2 /Ob1 /D NDEBUG") ENDIF(WIN32) 

Cmake seems to be ignoring these sets: well in advance for help!

+9
source share
2 answers

I used flags

 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi") set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF") 

This site explains the details.

+14
source

In "Modern Cmake" you can set this for every purpose, here is the way:

 if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC" AND CMAKE_BUILD_TYPE MATCHES "Release") target_compile_options(${TARGET_NAME} PRIVATE /Zi) # Tell linker to include symbol data set_target_properties(${TARGET_NAME} PROPERTIES LINK_FLAGS "/INCREMENTAL:NO /DEBUG /OPT:REF /OPT:ICF" ) # Set file name & location set_target_properties(${TARGET_NAME} PROPERTIES COMPILE_PDB_NAME ${TARGET_NAME} COMPILE_PDB_OUTPUT_DIR ${CMAKE_BINARY_DIR} ) endif() 

These flags are specific to MSVC , not WIN32 .

0
source

Source: https://habr.com/ru/post/1212034/


All Articles