Skip to content

Commit b24f8de

Browse files
CMAKE: add option to enable PDB in release (#29402)
### Details: - By default, it's OFF to enable sccache
1 parent 7bf894e commit b24f8de

File tree

4 files changed

+18
-6
lines changed

4 files changed

+18
-6
lines changed

cmake/developer_package/compile_flags/os_flags.cmake

+14-5
Original file line numberDiff line numberDiff line change
@@ -122,12 +122,21 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
122122
#
123123
# PDB related flags
124124
#
125-
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Zi")
126-
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi")
127125

128-
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
129-
set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
130-
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
126+
if(ENABLE_PDB_IN_RELEASE)
127+
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Zi")
128+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi")
129+
130+
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG")
131+
set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} /DEBUG")
132+
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG")
133+
endif()
134+
135+
# need to set extra flags after /DEBUG to ensure that binary size is not bloated
136+
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /OPT:REF /OPT:ICF")
137+
set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} /OPT:REF /OPT:ICF")
138+
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /OPT:REF /OPT:ICF")
139+
131140
elseif(OV_COMPILER_IS_INTEL_LLVM AND WIN32)
132141
#
133142
# Warnings as errors

cmake/developer_package/features.cmake

+2
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ ov_dependent_option (ENABLE_COVERAGE "enable code coverage" OFF "CMAKE_COMPILER_
4444

4545
ov_dependent_option (ENABLE_API_VALIDATOR "Enables API Validator usage" ON "WIN32" OFF)
4646

47+
ov_dependent_option (ENABLE_PDB_IN_RELEASE "Enables PDB files for Release build" OFF "WIN32" OFF)
48+
4749
# Defines CPU capabilities
4850

4951
ov_dependent_option (ENABLE_SSE42 "Enable SSE4.2 optimizations" ON "X86_64 OR (X86 AND NOT EMSCRIPTEN)" OFF)

cmake/developer_package/packaging/packaging.cmake

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ macro(ov_install_pdb target)
2626
# installation of linker PDB files for shared libraries
2727
install(FILES $<TARGET_PDB_FILE:${target}>
2828
DESTINATION ${OV_CPACK_RUNTIMEDIR} COMPONENT pdb
29+
OPTIONAL
2930
EXCLUDE_FROM_ALL)
3031
elseif(_lib_type STREQUAL "STATIC_LIBRARY")
3132
get_target_property(_compile_pdb_name ${target} OUTPUT_NAME)

docs/dev/build_windows.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ If you intend to generate PDB files and debug your build or run some tools, whic
4848
You should utilize one of the following CMake build type options:
4949
* `-DCMAKE_BUILD_TYPE=RelWithDebInfo`: This option generates PDB files with release information, making it suitable for debugging optimized builds.
5050
* `-DCMAKE_BUILD_TYPE=Debug`: This option generates PDB files optimized for debugging, providing comprehensive debugging information.
51-
* `-DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS=/Zi -DCMAKE_C_FLAGS=/Zi -DCMAKE_EXE_LINKER_FLAGS=/DEBUG -DCMAKE_MODULE_LINKER_FLAGS=/DEBUG -DCMAKE_SHARED_LINKER_FLAGS=/DEBUG` to build in Release mode, but with debug symbols generated.
51+
* `-DCMAKE_BUILD_TYPE=Release -DENABLE_PDB_IN_RELEASE=ON` to build in Release mode, but with debug symbols generated.
5252

5353
Note, that PDB symbols files are supported for both dynamic and static builds.
5454

0 commit comments

Comments
 (0)