J'ai ajouté le drapeau AddressSanitizer comme suit:
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
Tout est construit et fonctionne bien avec Unix Makefiles
.
Le problème survient lors de la génération du projet Xcode. Il ne veut tout simplement pas créer de lien car il ne trouve pas la bibliothèque ASan.
J'ai déjà trouvé deux solutions, mais j'ai décidé de ne pas les utiliser car elles ne peuvent pas être automatisées à l'aide de CMake uniquement:
-Wl,-undefined,dynamic_lookup
aux indicateurs liés, le lien avec les bibliothèques dynamiques est ignoré. libclang_rt.asan_osx_dynamic.dylib
directement.Alors, quel est le problème avec ces deux solutions?
DYLD_INSERT_LIBRARIES
pointant vers libclang_rt.asan_osx_dynamic.dylib
.De plus, en tant que solution supplémentaire, j'ai essayé d'activer l'indicateur Address Sanitizer à partir du schéma de cible Xcode, mais il est intéressant de noter qu'il n'a pas détecté les problèmes que j'ai ajoutés. Je ne l'ai donc pas répertorié comme solution car il a échoué.
Toute aide sera très appréciée.
Vous devez également fournir le ou les indicateurs à l'éditeur de liens. Je le fais comme ça:
set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address")
set (CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address")
cmake 3.13
introduire la configuration pour xcode schema
dans CMake
cmake_minimum_required(VERSION 3.13)
set(CMAKE_XCODE_GENERATE_SCHEME ON)
set(CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER ON)
set(CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN ON)
Quand construire
xcodebuild -enableAddressSanitizer YES