Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CMake with XCode target, generate debug symbols setting ignored for Release config

I am trying to generate a dSYM file for my Release configuration. In my CMake config, I have:

if (CMAKE_GENERATOR STREQUAL "Xcode")
  # generate debug symbols in a .dsym file for release mode
  set(CMAKE_XCODE_ATTRIBUTE_GCC_GENERATE_DEBUGGING_SYMBOLS[variant=Release] 
      "YES")
  set(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT[variant=Release] 
      "dwarf-with-dsym")
  # strip symbols from final executable
  set(CMAKE_XCODE_ATTRIBUTE_DEPLOYMENT_POSTPROCESSING[variant=Release] 
      "YES")
endif()

The debug information format and deployment postprocessing are both picked up for the Release configuration. However, Generate Debug Symbols in the XCode interface / GCC_GENERATE_DEBUGGING_SYMBOLS in the xxx.xcodeproj/project.pbxproj file are set toNO for the Release configuration.

Generate debug symbols off in Release

Removing the [variant=Release] restriction has no effect on the Release config. If I manually turn on the setting in Release, I am getting the desired outcome. How can I get CMake to create the Xcode project with this setting on for the Release config?

I do not want to use RelWithDebInfo because it has a lower optimization setting (-O2 instead of -O3). I want the .dSYM file for debugging crashes from the field.

like image 281
Jake Cobb Avatar asked Apr 06 '18 14:04

Jake Cobb


1 Answers

You'll have to resort to modifiying the CMAKE_CXX_FLAGS although I would recommend using target_compile_options with generator expressions:

target_compile_options(your_exe PRIVATE
    $<$<CXX_COMPILER_ID:Clang>:-g>
    )
like image 106
Samaursa Avatar answered Oct 23 '22 22:10

Samaursa