2017-05-05 45 views
7

Swift'de yazılmış bir Xcode projesinde LLVM C API'sini kullanmaya çalışıyorum. Bunu yapmak için, here kılavuzunu gevşek bir şekilde takip ediyorum, ancak sorun yaşıyorum.Bir Swift Xcode Projesinde LLVM C API'sini Kullanma

<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 

slaytlar bir sonraki adım bayrakları eklemektir::

-Xcc -D__STDC_CONSTANT_MACROS \ 
-Xcc -D__STDC_LIMIT_MACROS 

derleme aşamasında, Xcode inşa ayarlarına dahil yolları ekledikten sonra, ben aşağıdaki hataları alıyorum ancak bunları kurulum ayarlarına nereye koyacağımı bilmiyorum - onları 'Diğer C Bayrakları' ya da 'Diğer Hızlı Bayraklar' seçeneklerine ekleyerek hiçbir şey yapmıyor gibi görünüyor.

Bunu yapmak için nasıl gitmeliyim?

+0

Merhaba @Jumhyn, zaten ne yaptığınızı ve tam olarak nerede başarısız olduğunu görmek zor, bu yüzden bu makalelerin herhangi birine bakmanızı tavsiye ederim: 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

cevap

2

Yalnızca brew install llvm'u Homebrew kullanarak çalıştırarak LLVM'yi önceden derlemeyi deneyin.

NOT: şiddetle burada onun yükleme talimatlarını takip etmeli ve bu durumda bir Swift sarıcı gibi LLVMSwift kullanmanızı öneririz. Ancak LLVM'ye doğrudan kendiniz erişmek isterseniz, o zaman okumaya devam edin.

"Ayarlar kurmak" başlığı altında Projenizin istenen hedefin altında kütüphane arama yollarına senin başlık arama yollarına /usr/local/opt/llvm/include ve /usr/local/opt/llvm/lib ekleyin:

Added to search paths

Ve open -R '/usr/local/opt/llvm/lib/libLLVM.dylib' ile Finder'da açık /usr/local/opt/llvm/lib/libLLVM.dylib (sürüklemek) "Genel" altındaki "Bağlantılı Çerçeveler ve Kütüphaneler" e (ve gösterildiği gibi "Gerekli" yi yapın):

Objective-C Bridging Header

Ve tüm hazırsınız:

Son olarak, (, #include <llvm-c/Core.h> örneğin) (nasıl emin değilseniz steps 1-2 in this tutorial) ve ihtiyacınız hangisi başlıklarını içerir bir Objective-C Bridging Başlığını oluşturmak! Normalde Swift kodunda olduğu gibi herhangi bir LLVM sınıfını kullanın.

+0

Bu çalışır! Bir not olarak, dahil etmeden önce dosyanın en üstünde #define __STDC_LIMIT_MACROS ve '__STDC_CONSTANT_MACROS 'vardı. Özel olarak yapılmış bir yüklemeyi kullanma yaklaşımının neden çalışmadığını biliyor musunuz? – Jumhyn

+0

Soruyorum, çünkü "llvm" demeti, kaynağından oluşturduğum 4.0 yerine yalnızca LLVM 3.5'i yükler. – Jumhyn

+0

Bunun işe yaradığıma sevindim! Lütfen "kabul edildi" olarak işaretlemeyi unutmayın. Hangi dosyaya '# define 'eklemeniz gerekiyor? Bunlar genellikle sadece derleme için kullanılıyor ve Homebrew sürümü önceden derlenmiş olarak geliyor, bu yüzden onlara ihtiyacınız olacak garip geliyor. Ayrıca, Homebrew'ın benim için yüklediği sürüm aslında 4.0.0'dır (lütfen kontrol etmek için '/ usr/local/opt/llvm/bin/llc --version' komutunu çalıştırın). En son sürümü yüklediğinizden emin olmak için 'brew update &&mew yükseltme lvv' yi çalıştırmayı deneyin. – Coder256