CMake: Fix WITH_SANITIZE

Adding qtc_enable_sanitize to add_qtc_executable to also instrument applications

Changing qtc_enable_sanitize to use target_compile_options instead of trying
to modify CMAKE_CXX_FLAGS_DEBUG and hoping that nobody else overwrites it,
which previously erased the added flags.

Adds support for MSVC /fsanitize

Change-Id: Ida80cfd7ef7ea91b2d6473fdc047cb7132cdfec6
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This commit is contained in:
Marcus Tillmanns
2022-09-20 00:05:32 -07:00
parent 215b2ce09b
commit 66eca4cb4b
2 changed files with 10 additions and 5 deletions

View File

@@ -168,11 +168,12 @@ function(qtc_enable_release_for_debug_configuration)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}" PARENT_SCOPE)
endfunction()
function(qtc_enable_sanitize _sanitize_flags)
function(qtc_enable_sanitize _target _sanitize_flags)
target_compile_options("${_target}" PUBLIC -fsanitize=${SANITIZE_FLAGS})
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=${_sanitize_flags}")
target_link_options("${_target}" PUBLIC -fsanitize=${SANITIZE_FLAGS})
endif()
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}" PARENT_SCOPE)
endfunction()
function(qtc_add_link_flags_no_undefined target)