2017-05-05 13 views
7

में एलएलवीएम सी एपीआई का उपयोग करना मैं स्विफ्ट में लिखे गए एक्सकोड प्रोजेक्ट में एलएलवीएम सी एपीआई का उपयोग करने का प्रयास कर रहा हूं। ऐसा करने के लिए, मैं गाइड here गाइड का पीछा कर रहा हूं, लेकिन मुझे परेशानी हो रही है।स्विफ्ट एक्सकोड प्रोजेक्ट

<unknown>:0: error: module 'LLVM_Backend.CodeGen.PBQP.math' requires feature 'cplusplus' 
/Users/freddy/Development/llvm-source/build/include/llvm/Support/DataTypes.h:35:10: note: submodule of top-level module 'LLVM_Backend' implicitly imported here 
#include <math.h> 
     ^
<module-includes>:1:9: note: in file included from <module-includes>:1: 
#import "./Analysis.h" 
     ^
/Users/freddy/Development/llvm-source/llvm/include/llvm-c/./Analysis.h:22:10: note: in file included from /Users/freddy/Development/llvm-source/llvm/include/llvm-c/./Analysis.h:22: 
#include "llvm-c/Types.h" 
     ^
/Users/freddy/Development/llvm-source/llvm/include/llvm-c/Types.h:17:10: error: could not build module 'LLVM_Support_DataTypes' 
#include "llvm/Support/DataTypes.h" 
     ^
/Users/freddy/Development/Xcode Projects/SwiftLLVMTest/SwiftLLVMTest/main.swift:10:8: error: could not build Objective-C module 'LLVM_C' 
import LLVM_C 

स्लाइड्स में अगले कदम के झंडे को जोड़ने के लिए है:

-Xcc -D__STDC_CONSTANT_MACROS \ 
-Xcc -D__STDC_LIMIT_MACROS 

संकलन चरण में, Xcode में निर्माण सेटिंग्स में शामिल पथ को जोड़ने के बाद, मैं निम्नलिखित त्रुटियाँ हो रही है लेकिन मुझे यकीन नहीं है कि इन्हें बिल्ड सेटिंग्स में कहां रखा जाए - उन्हें 'अन्य सी ध्वज' या 'अन्य स्विफ्ट ध्वज' विकल्पों में जोड़ना कुछ भी प्रतीत नहीं होता है।

मुझे यह करने के बारे में कैसे जाना चाहिए?

+0

हाय @ जुमिन, यह देखना मुश्किल है कि आपने पहले से क्या किया है और वास्तव में यह कहां विफल रहा है, इसलिए मैं आपको इन लेखों में से किसी एक को देखने की सलाह दूंगा: https://lowlevelbits.org/how-to-use -llvm-api-with-swift /, https://medium.com/compileswift/how-to-setup-xcode-swift-project-to-use-llvm-c-apis-3ccbf081d002 – AlexDenisov

उत्तर

2

Homebrew का उपयोग करके brew install llvm चलाकर एलएलवीएम प्री-संकलित स्थापित करने का प्रयास करें।

नोट: मैं दृढ़ता से एक स्विफ्ट आवरण जैसे LLVMSwift, जिस स्थिति में आप यहां से अपनी स्थापना के निर्देश का पालन करना चाहिए का उपयोग करें। लेकिन अगर आप सीधे एलएलवीएम तक पहुंचना चाहते हैं, तो पढ़ें।

"सेटिंग बिल्ड 'के तहत अपनी परियोजना के वांछित लक्ष्य के तहत अपने हैडर खोज पथ को /usr/local/opt/llvm/include और /usr/local/opt/llvm/lib अपने पुस्तकालय खोज पथ में जोड़ें:

Added to search paths

और open -R '/usr/local/opt/llvm/lib/libLLVM.dylib' साथ खोजक में /usr/local/opt/llvm/lib/libLLVM.dylib (खुला खींचें) के तहत "सामान्य" ("लिंक किए गए फ़्रेमवर्क और पुस्तकालय" के लिए और बनाने के लिए यह "आवश्यक" दिखाया गया है):

Added to "Linked Frameworks and Libraries"

,210

अंत में, (यदि आपको पता कैसे नहीं हैं steps 1-2 in this tutorial) और (, #include <llvm-c/Core.h> उदाहरण के लिए) जो भी हेडर आप की जरूरत में शामिल एक ऑब्जेक्टिव-सी ब्रिजिंग हैडर बनाएँ: Objective-C Bridging Header

और आप तैयार हैं! बस किसी भी एलएलवीएम कक्षा का उपयोग करें जैसा कि आप आमतौर पर स्विफ्ट कोड में करेंगे।

+0

यह काम करता है! एक नोट के रूप में, मुझे फ़ाइल से पहले फ़ाइल में शीर्ष पर # __STDC_LIMIT_MACROS' और '__STDC_CONSTANT_MACROS' परिभाषित करना था। क्या आप जानते हैं कि कस्टम निर्मित स्थापना का उपयोग करने का दृष्टिकोण क्यों काम नहीं करता है? – Jumhyn

+0

मैं पूछता हूं, क्योंकि 'brew install llvm' केवल 4.0 के बजाय एलएलवीएम 3.5 स्थापित करता है जिसे मैंने स्रोत से बनाया है। – Jumhyn

+0

मुझे खुशी है कि यह काम करता है! कृपया इसे "स्वीकृत" के रूप में चिह्नित करना याद रखें। आपको किस फाइल में '# परिभाषित' जोड़ना पड़ा? मुझे लगता है कि आमतौर पर केवल संकलन के लिए उपयोग किया जाता है, और होमब्रू संस्करण पहले से आता है, इसलिए यह अजीब लगता है कि आपको उनकी आवश्यकता होगी। इसके अतिरिक्त, होमब्री मेरे लिए स्थापित संस्करण वास्तव में 4.0.0 है (कृपया जांचने के लिए '/ usr/local/opt/llvm/bin/llc --version' चलाएं)। यह सुनिश्चित करने के लिए कि आपके पास नवीनतम संस्करण स्थापित है, 'ब्रू अपडेट अपडेट करें & bww अपग्रेड llvm' चलाने का प्रयास करें। – Coder256

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