में काम करता है उचित CMake में AddressSanitizer सक्षम करने के लिए रास्ता नहीं है क्या:मैं पालन AddressSanitizer झंडा जोड़ दिया है कि Xcode
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
सब कुछ बनाता है और जब Unix Makefiles
का उपयोग कर ठीक चलाता है।
एक्सकोड प्रोजेक्ट उत्पन्न करते समय समस्या आती है, यह सिर्फ लिंक नहीं करना चाहता क्योंकि यह एएसन लाइब्रेरी नहीं ढूंढ सकता है।
मैं पहले से ही दो समाधान मिल गया, लेकिन उन्हें इस्तेमाल करने के लिए नहीं है, क्योंकि वे सिर्फ CMake का उपयोग कर स्वचालित नहीं किया जा सकता का फैसला किया:
- जुड़ा हुआ झंडे को
-Wl,-undefined,dynamic_lookup
जोड़ा जा रहा है, तो यह गतिशील पुस्तकालयों को जोड़ने को छोड़ देता है। libclang_rt.asan_osx_dynamic.dylib
से सीधे लिंक करें।
तो इन दो समाधानों में समस्या क्या है?
- # 1 समाधान का उपयोग करते हैं, तो मैं मैन्युअल Xcode में लक्ष्य योजना खोलने के लिए और
libclang_rt.asan_osx_dynamic.dylib
कोDYLD_INSERT_LIBRARIES
वातावरण चर की ओर इशारा करते जोड़ने के लिए। - समाधान # 2 का उपयोग करते समय, एएसन लाइब्रेरी का पथ कंप्यूटर के बीच भिन्न होता है।
साथ ही एक और समाधान के रूप में, मैं झंडा प्रक्षालक सक्षम करने पता Xcode लक्ष्य योजना से कोशिश की, लेकिन दिलचस्प बात यह मुद्दों मैं जोड़ा का पता नहीं चला, तो मैं एक समाधान के रूप में इस श्रेणी में नहीं रखा है क्योंकि यह अपने परीक्षण में विफल रहा है।
किसी भी मदद की बहुत सराहना की जाएगी।
शायद यह बाहर की जाँच: https://github.com/arsenm/sanitizers-cmake – xaxxon
आपको लगता है कि आप क्या चाहते हैं पर मुड़ता है एक Xcode प्रोजेक्ट स्थापित करने के बारे में पता है, तो आप कर सकते हैं इसे 'CMAKE_XCODE_ATTRIBUTE _...' चरमपंथी या प्रति-लक्षित गुणों का उपयोग करके सीएमके से सेट करें 'XCODE_ATTRIBUTE _... '। –