2017-04-18 8 views
5

official LLVM 4.0 build for Windows विजुअल स्टूडियो 2015 अप करने के लिए दृश्य स्टूडियो के साथ एकीकृत करता दुर्भाग्य से यह अभी भी दृश्य स्टूडियो 2017LLVM दृश्य स्टूडियो में 4.0 बजना 2017

का समर्थन नहीं करता आप एक परियोजना के मंच टूलसेट स्थापित करने के लिए प्रयास करते हैं LLVM-vs2014 पर, यह एक त्रुटि पॉप अप करता है।

क्या आप इसे काम करने के लिए किसी भी तरह से जानते हैं?

उत्तर

7

इसमें कुछ एमएसबिल्ड लक्ष्य की आवश्यकता होती है जो केवल सी ++ v140 टूलसेट के साथ शिप करते हैं, और वीएस 2017 केवल डिफ़ॉल्ट रूप से v141 टूलसेट इंस्टॉल करता है। यदि आप वीएस 2017 इंस्टॉलर खोलते हैं, तो v140 टूलसेट के लिए चेकबॉक्स ढूंढें और इंस्टॉल करें कि सही सी ++ एमएसबिल्ड लक्ष्य उपलब्ध होंगे और यह काम काम करेगा।

+0

अच्छा जवाब। दूसरी ओर यह एलएलवीएम द्वारा v141 टूलसेट का समर्थन करने का समय होगा। – plasmacel

+0

हाँ v140 :-) – keith

+4

की आवश्यकता के बिना v141 का समर्थन करने के लिए उनके लिए अच्छा होगा, एलएलवीएम-बनाम 2014 से नाम बदलने के लिए उनके लिए भी अच्छा होगा! – keith

1

एलएलवीएम/क्लैंग में अब एक अद्यतन पैच है जो आपको इसे VS2017 के साथ उपयोग करने की अनुमति देता है। लेकिन वे अभी भी सीधे VS2017 का समर्थन नहीं करते हैं। मैंने एलएसवीएम डेवलपर मेलिंग सूची पर उनसे वीएस2017 के लिए अपना समर्थन अपडेट करने के लिए कहा, इसलिए उम्मीद है कि वे इसे करेंगे। अगर वे मैंने जो कहा वह सुनते हैं।

+0

क्या आप मुझे पैच की ओर इंगित कर सकते हैं? – batbrat

1

मुझे पता चला है कि विजुअल स्टूडियो 2017 अपडेट 15.5.6 के साथ एलएलवीएम क्लैंग 7.0 को एकीकृत कैसे किया जाए। नवीनतम एलएलवीएम बिल्ड का उपयोग कर पीडीबी आधारित डिबगिंग के लिए पूर्ण समर्थन के साथ v1913।

यानी, एलएलडी-लिंक/डेबग: गहश; clang-cl-mllvm -emit-codeview-ghash-section ध्वज clang-cl के लिए ध्वज।

यह एक तीन चरण की प्रक्रिया है।

  1. नवीनतम LLVM स्थापित
  2. अद्यतन toolset.props, वी.एस. में toolset.targets नवीनतम बजना
  3. समर्थन करने के लिए अपने C/C++ या अन्य लैंग परियोजना के निर्माण के लिए उपयोग करने के लिए नए टूलसेट का चयन करें

विजुअल स्टूडियो 2017 अपडेट 15.4.5 के रूप में माइक्रोसॉफ्ट "प्रयोगात्मक" क्लैंग सी 2 अब काम नहीं करता है। इस प्रकार, उपरोक्त फिक्स को कोड को संकलित करने के लिए क्लैंग का उपयोग करना आवश्यक है जिसमें पूर्ण पीडीबी (केवल कोडव्यू/जेड 7 सीमित नहीं) डिबग्बिलिटी है। पोर्टेबिलिटी टेस्टिंग क्रॉस-प्लेटफॉर्म बिल्डिंग के लिए अब यह एक और पूर्ण सूट बन गया है क्योंकि आप क्लैंग कंपाइलर फ्रंट एंड एलएलवीएम कोडेन बैकएंड और एलएलवीएम लिंकर से सभी एलएलवीएम घटकों का उपयोग करके विंडोज़ के लिए पीडीबी डीबग कर सकते हैं।

चीयर्स, डेविड

0

बाहर चेक जनवरी 09, 2018 http://planet.clang.org/

पर देखो "इसे आजमाएं!" अनुभाग:

आप पहले से ही बजना-सीएल और Windows आज पर lld-लिंक उपयोग कर रहे हैं, तो आप इस आज़मा सकते हैं। इसे सक्षम करने के लिए दो झंडे हैं, एक कंपाइलर के लिए और एक लिंकर के लिए: के उत्सर्जन को सक्षम करने के लिए। संकलक द्वारा $ H अनुभाग को डिबग करें, आपको -mllvm -emit-codeview-ghash-section ध्वज क्लैंग- सीएल (यह झंडा भविष्य में दूर जाना चाहिए, एक बार इसे स्थिर माना जाता है और डिफ़ॉल्ट रूप से चालू होने के लिए पर्याप्त होता है)। इस जानकारी का उपयोग करने के लिए lld-link बताने के लिए, आपको /DEBUG:GHASH को lld में पास करने की आवश्यकता होगी।

तुम बस या तो अपने C++ परियोजनाओं में -mllvm -emit-codeview-ghash-section झंडे पारित करने के लिए "कमांड लाइन: अतिरिक्त विकल्प" की जरूरत क्षेत्र, या उन्हें है कि आप C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Platforms\Win32\PlatformToolsets\LLVM-vs2017 या C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Platforms\x64\PlatformToolsets\LLVM-vs2017 में बनाए गए "toolset.props" फ़ाइल में सीधे जगह ।

महत्वपूर्ण यह है कि उन CLI विकल्पों को जोड़ने में आप डिबग जानकारी फेंकना बजना कह रहे हैं कि lld (उर्फ lld-लिंक) को समझते हैं और पूरी तरह से आबादी PDB निर्माण करने के लिए प्रयोग करेंगे फ़ाइलें। सीमित जो इसे एलएलवीएम 7.0 की जनवरी 09, 2018 बूंदों से पहले नहीं बनाया गया था।

toolset.targets: (कोई भी संस्करण)

<Project ToolsVersion="14.1" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Import Project="$(VCTargetsPath)\Microsoft.CppCommon.targets" /> 
</Project> 

toolset.props: (Win32 संस्करण)

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Import Project="$(VCTargetsPath)\Platforms\$(Platform)\PlatformToolsets\v141\Microsoft.Cpp.$(Platform).v141.props" Condition="Exists('$(VCTargetsPath)\Platforms\$(Platform)\PlatformToolsets\v141\Microsoft.Cpp.$(Platform).v141.props')"/> 
    <Import Project="$(VCTargetsPath)\Platforms\$(Platform)\PlatformToolsets\v141\Toolset.props" Condition="Exists('$(VCTargetsPath)\Platforms\$(Platform)\PlatformToolsets\v141\Toolset.props')"/> 

    <PropertyGroup> 
    <LLVMInstallDir>$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\LLVM\LLVM)</LLVMInstallDir> 
    <LLVMInstallDir Condition="'$(LLVMInstallDir)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\LLVM\LLVM)</LLVMInstallDir> 
    <ExecutablePath>$(LLVMInstallDir)\msbuild-bin;$(ExecutablePath)</ExecutablePath> 
    <LibraryPath>$(LLVMInstallDir)\lib\clang\7.0\lib\windows;$(LibraryPath)</LibraryPath> 
    </PropertyGroup> 

    <ItemDefinitionGroup> 
    <ClCompile> 
     <!-- remove the implicit vcxxx.pdb path to avoid rebuilds every time as clang-cl only supports /Z7 --> 
     <ProgramDataBaseFileName></ProgramDataBaseFileName> 
     <!-- Set the value of _MSC_VER to claim for compatibility --> 
     <AdditionalOptions>-m32 -fmsc-version=1913 %(AdditionalOptions)</AdditionalOptions> 
    </ClCompile> 
    </ItemDefinitionGroup> 
</Project> 

x64 के लिए, -m32 करने के लिए -m64

पी पी एस बदलने के लिए, मैं भी है देशी विंडोज -10-एआरएम ऐप्स बनाने के लिए माइक्रोस्कोफ्ट एआरएम और एआरएम 64 कंपाइलर्स सक्षम (यूडब्ल्यूपी आधुनिक-कॉम-जंक नहीं)। लेकिन, अभी तक के रूप में, मैं नहीं पर्याप्त खुदाई बजना के माध्यम से सूत्रों ठीक से क्या -m32 और -m64इंटेल कोड पीढ़ी के लिए क्या करने एआरएम के लिए कुछ इसी तरह कॉन्फ़िगर करने के लिए किया है।

इन लेखों देखें:

संबंधित मुद्दे