工作我已经添加AddressSanitizer标志如下:什么是正确的方式CMake的启用AddressSanitizer在Xcode中
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
一切都建立并使用Unix Makefiles
时运行正常。
生成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库的路径因计算机而异。
此外,作为另一种解决方案,我试图从Xcode目标方案启用Address Sanitizer标志,但有趣的是它没有检测到我添加的问题,所以我没有列出这个解决方案,因为它没有通过我的测试。
任何帮助将不胜感激。
或许检查了这一点:https://github.com/arsenm/sanitizers-cmake – xaxxon
如果你知道一个Xcode项目设置,你想要什么变成,你可以通过填充'CMAKE_XCODE_ATTRIBUTE _...'变量或使用每个目标属性'XCODE_ATTRIBUTE _...'来从CMake中设置它。 –