2014-10-01 11 views
6

C++ projemde LLVM/Clang kullanıyorum. Makefile ile her şeyi güzelce inşa edebilirim.Cmake Projeme LLVM Ekleme: LLVM'nin Cmake dosyasında neden hardcoded yollar var?

Şimdi Cmake'ye taşınmaya çalışıyorum ve işleri başaramıyorum. Ne yaptığımı açıklamama izin ver.

Bu öğretici takip ediyorum: o web sayfasından

http://llvm.org/docs/CMake.html#embedding

A alakalı pasajıdır:

From LLVM 3.5 onwards both the CMake and autoconf/Makefile build systems export LLVM libraries as importable CMake targets.

Great! Ben LLVM 3.5 indirmeye gidiyorum ve gitmek için iyi olmalıyım. Ben indirme sayfasına gitti:

http://llvm.org/releases/download.html

ve Ubuntu 14.04 Linux için Clang için önceden oluşturulmuş ikilileri indirilen.

find_path (LLVM_DIR LLVM-Config.cmake 
    /home/dev/Downloads/clang+llvm-3.5.0-x86_64-linux-gnu/share/llvm/cmake 
     ) 
message(STATUS "LLVM_DIR = ${LLVM_DIR}") 
find_package(LLVM REQUIRED CONFIG) 

(Ben bir standart dışı konumda şu anda olduğundan LLVM_DIR set dışında bu, öğretici aynıdır.)

:

Sonra, benim CMakeLists.txt dosyaya aşağıdaki eklendi

[[email protected]:/path/to/project/build (develop)] $ cmake .. 
-- LLVM_DIR = /home/dev/Downloads/clang+llvm-3.5.0-x86_64-linux-gnu/share/llvm/cmake 
CMake Error at /home/dev/Downloads/clang+llvm-3.5.0-x86_64-linux-gnu/share/llvm/cmake/LLVMConfig.cmake:50 (include): 
    include could not find load file: 

    /home/ben/development/llvm/3.5/final/Phase3/Release/llvmCore-3.5.0-final.install/share/llvm/cmake/LLVMExports.cmake 
Call Stack (most recent call first): 
    CMakeLists.txt:14 (find_package) 


CMake Error at /home/dev/Downloads/clang+llvm-3.5.0-x86_64-linux-gnu/share/llvm/cmake/LLVMConfig.cmake:53 (include): 
    include could not find load file: 

    /home/ben/development/llvm/3.5/final/Phase3/Release/llvmCore-3.5.0-final.install/share/llvm/cmake/LLVM-Config.cmake 
Call Stack (most recent call first): 
    CMakeLists.txt:14 (find_package) 

Yani CKağıt LLVM en CKağıt dosyasını bulmak gibi görünüyor, ama CKağıt: Ben cmake çalıştırdığınızda

, aşağıdaki hatayı alıyorum /home/ben/ ile başlayan bazı yol hakkında şikayet ediyor.

Gerçekten de, LLVM'nin LLVMConfig.cmake dosyasının, makinemle ilgili olmayan bazı mutlak yollara sahip olduğu anlaşılıyor. Örneğin:

[[email protected]:~/Downloads/clang+llvm-3.5.0-x86_64-linux-gnu ] $ head ./share/llvm/cmake/LLVMConfig.cmake 
# This file provides information and services to the final user. 

set(LLVM_INSTALL_PREFIX "/home/ben/development/llvm/3.5/final/Phase3/Release/llvmCore-3.5.0-final.install") 

set(LLVM_VERSION_MAJOR 3) 
set(LLVM_VERSION_MINOR 5) 
set(LLVM_VERSION_PATCH 0) 
set(LLVM_PACKAGE_VERSION 3.5.0) 

set(LLVM_COMMON_DEPENDS) 

Kim ben ve o bu dosyada ne işi var? O daha çok birkaç yerde görünür:

[[email protected]:~/Downloads/clang+llvm-3.5.0-x86_64-linux-gnu ] $ grep ben ./share/llvm/cmake/LLVMConfig.cmake 
set(LLVM_INSTALL_PREFIX "/home/ben/development/llvm/3.5/final/Phase3/Release/llvmCore-3.5.0-final.install") 
set(LLVM_INCLUDE_DIRS "/home/ben/development/llvm/3.5/final/Phase3/Release/llvmCore-3.5.0-final.install/include") 
set(LLVM_LIBRARY_DIRS "/home/ben/development/llvm/3.5/final/Phase3/Release/llvmCore-3.5.0-final.install/lib") 
set(LLVM_CMAKE_DIR "/home/ben/development/llvm/3.5/final/Phase3/Release/llvmCore-3.5.0-final.install/share/llvm/cmake") 
set(LLVM_TOOLS_BINARY_DIR "/home/ben/development/llvm/3.5/final/Phase3/Release/llvmCore-3.5.0-final.install/bin") 

yok, bu yollar benim makinede yoktur demek. Bu dosyaların neden bu yollara sahip olduğu konusunda kafam karıştı mı? Makinem için bu yolları değiştirmek için bir araç veya bir şey mi çalıştırmam gerekiyor? Veya hepsini el ile değiştirmem gerekiyor mu?

DÜZENLEME: meraktan, el benim makinede yolları işaret etmek tüm bu yolları değişti: Bundan sonra

[[email protected]:~/Downloads/clang+llvm-3.5.0-x86_64-linux-gnu/share/llvm/cmake ] $ sed -i -e's/.home.ben.development.llvm.3.5.final.Phase3.Release.llvmCore-3.5.0-final.install/\/home\/dev\/Downloads\/clang+llvm-3.5.0-x86_64-linux-gnu/g' * 

, CKağıt artık şikayet ve benim yapı devam etti.

Bunu neden yapmak istediğimi hala bilmek isterim.

+1

Bir kaynak dışı için 'llvm-config' temelli bir FindLlvm.cmake yazmanın iyi olması gerektiğine inanıyorum; ve tek endişe, 'llvm-config' –

cevap

2

Bir LLVM hatası gibi görünüyor. Girmek için çekinmeyin:

+0

yolunu geçmelisin muhtemelen haklısın. Bir hata yaptım: http://llvm.org/bugs/show_bug.cgi?id = 21121 – stepthom