Как правильно включить AddressSanitizer в CMake, который работает в Xcode?C++

Программы на C++. Форум разработчиков
Anonymous
 Как правильно включить AddressSanitizer в CMake, который работает в Xcode?

Сообщение Anonymous »

Я добавил флаг AddressSanitizer следующим образом:

Код: Выделить всё

set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
При использовании файлов Makefile Unix все собирается и работает нормально.

Проблема возникает при создании Xcode, он просто не хочет компоноваться, потому что не может найти библиотеку ASan.

Я уже нашел два решения, но решил не использовать их, потому что их нельзя автоматизировано с использованием только CMake:
  • Добавление -Wl,-undefined,dynamic_lookup к связанным флагам, чтобы пропустить связывание с динамическим библиотеки.
  • Свяжитесь с libclang_rt.asan_osx_dynamic.dylib напрямую.
Так в чем же суть проблема с этими двумя решениями?
  • При использовании решения № 1 мне приходится вручную открывать целевую схему в Xcode и добавлять DYLD_INSERT_LIBRARIES переменная среды, указывающая на libclang_rt.asan_osx_dynamic.dylib.
  • При использовании решения №2 путь к библиотеке ASan различается на разных компьютерах.
Кроме того, в качестве другого решения я попробовал включить флаг Address Sanitizer из целевой схемы Xcode, но, что интересно, он не обнаружил добавленных мной проблем, поэтому я не стал перечислять это. в качестве решения, поскольку он не прошел мой тест.

Буду очень признателен за любую помощь.

Подробнее здесь: https://stackoverflow.com/questions/443 ... s-in-xcode

Вернуться в «C++»