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.
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' –