工作我已經添加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中設置它。 –