Reputation: 1861
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.
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.
Upvotes: 7
Views: 3594
Reputation: 257
Use a post build script using add_custom_command
that runs xcrun dsymutil $<TARGET_FILE:your_target> -o $<TARGET_DIR:your_target>/blah.dSYM
.
This has a downside that this script will always be run even if nothing changes in the code. Using it as a step of Xcode build process could eliminate that redundant run. Benefit is that all generators can use it.
Upvotes: 0
Reputation: 17197
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>
)
Upvotes: 3