带有 XCode 目标的 CMake,为发布配置生成忽略的调试符号设置
CMake with XCode target, generate debug symbols setting ignored for Release config
我正在尝试为我的发布配置生成一个 dSYM 文件。在我的 CMake 配置中,我有:
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()
发布配置的调试信息格式和部署后处理均已选取。然而,XCode接口中的Generate Debug Symbols
/xxx.xcodeproj/project.pbxproj
文件中的GCC_GENERATE_DEBUGGING_SYMBOLS
对于Release配置设置为NO
。
删除 [variant=Release]
限制对发布配置没有影响。如果我手动打开 Release 中的设置,我会得到想要的结果。如何让 CMake 为发布配置创建 Xcode 项目并启用此设置?
我不想使用 RelWithDebInfo
,因为它的优化设置较低(-O2
而不是 -O3
)。我想要 .dSYM
文件来调试现场崩溃。
尽管我建议将 target_compile_options
与生成器表达式一起使用,但您将不得不求助于修改 CMAKE_CXX_FLAGS
:
target_compile_options(your_exe PRIVATE
$<$<CXX_COMPILER_ID:Clang>:-g>
)
使用 post 使用 add_custom_command
构建脚本 运行s xcrun dsymutil $<TARGET_FILE:your_target> -o $<TARGET_DIR:your_target>/blah.dSYM
。
这有一个缺点,即即使代码没有任何变化,该脚本也将始终是 运行。将其用作 Xcode 构建过程的一个步骤可以消除冗余 运行。好处是所有生成器都可以用。
我正在尝试为我的发布配置生成一个 dSYM 文件。在我的 CMake 配置中,我有:
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()
发布配置的调试信息格式和部署后处理均已选取。然而,XCode接口中的Generate Debug Symbols
/xxx.xcodeproj/project.pbxproj
文件中的GCC_GENERATE_DEBUGGING_SYMBOLS
对于Release配置设置为NO
。
删除 [variant=Release]
限制对发布配置没有影响。如果我手动打开 Release 中的设置,我会得到想要的结果。如何让 CMake 为发布配置创建 Xcode 项目并启用此设置?
我不想使用 RelWithDebInfo
,因为它的优化设置较低(-O2
而不是 -O3
)。我想要 .dSYM
文件来调试现场崩溃。
尽管我建议将 target_compile_options
与生成器表达式一起使用,但您将不得不求助于修改 CMAKE_CXX_FLAGS
:
target_compile_options(your_exe PRIVATE
$<$<CXX_COMPILER_ID:Clang>:-g>
)
使用 post 使用 add_custom_command
构建脚本 运行s xcrun dsymutil $<TARGET_FILE:your_target> -o $<TARGET_DIR:your_target>/blah.dSYM
。
这有一个缺点,即即使代码没有任何变化,该脚本也将始终是 运行。将其用作 Xcode 构建过程的一个步骤可以消除冗余 运行。好处是所有生成器都可以用。