Exemple CMakeLists.txt fichier de projet LLVM
Je vais avoir du mal à obtenir LLVM pour travailler sur un nouveau projet. J'ai essayé plusieurs CMakeLists.txt exemples de http://old.nabble.com/CMake-sample-project--td28871124.html et utilisé beaucoup de temps sur elle.
Je peux construire LLVM et les exemples parfaitement, mais je veux un projet qui n'est pas à l'intérieur de la LLVM dossier. J'utilise Visual Studio 2010 sur Windows 7. Droit maintenant, ma configuration est: est-ce
root
- CMakeLists.txt (1)
main
- CMakeLists.txt (2)
- main.cpp (an exact copy of the Fibonacci example)
(1)
cmake_minimum_required(VERSION 2.6)
project (TestLLVM)
set(LLVM_SRC_DIR "MY FOLDER/llvm-2.9" CACHE PATH "Directory LLVM source (includes) are in")
set(LLVM_BIN_DIR "MY FOLDER/llvm-2.9-install" CACHE PATH "Directory LLVM binaries (libraries) are in")
set (CMAKE_BUILD_TYPE Debug)
add_definitions (-D_DEBUG)
link_directories(${LLVM_BIN_DIR}/lib/Release)
include_directories(${LLVM_SRC_DIR}/include ${LLVM_BIN_DIR}/include)
add_subdirectory (main)
(2)
if(NOT WIN32 OR MSYS OR CYGWIN)
set (PLATFORM_LIBS dl boost_system)
endif()
add_executable (main main.cpp)
target_link_libraries (main
${PLATFORM_LIBS}
LLVMX86Disassembler
LLVMX86AsmParser
LLVMX86AsmPrinter
LLVMX86CodeGen
LLVMSelectionDAG
LLVMAsmPrinter
LLVMMCParser
LLVMX86Info
LLVMJIT
LLVMExecutionEngine
LLVMCodeGen
LLVMScalarOpts
LLVMTransformUtils
LLVMipa
LLVMAnalysis
LLVMTarget
LLVMMC
LLVMCore
LLVMSupport
)
CMake
fonctionne très bien et crée un fichier de solution etc. mais quand je compile le projet, je reçois beaucoup d'externes non résolus et les inadéquations de LLVMX86CodeGen.lib. Et je reçois aussi ce:
defaultlib 'MSVCRT conflits avec d'autres bibliothèques; utilisez /NODEFAULTLIB:library
Le problème peut avoir quelque chose à faire avec:
- J'ai enlevé LLVMSystem
à partir de la liste parce qu'il n'a pas été trouvé.
- Mon compilé libs est dans /lib/Presse/, et non /lib/comme le montrent les exemples.
Tout aider avec le problème ci-dessus serait d'une grande aide! 🙂
Vous devez vous connecter pour publier un commentaire.
Voici toutes les informations dont vous avez besoin: http://llvm.org/docs/CMake.html#embedding-llvm-in-your-project.
Vous observez ce genre de problème parce que certains linkers ne peut pas lier automatiquement les bibliothèques statiques dans le bon ordre. Pour cela, vous devez utiliser
llvm_map_components_to_libraries
fonction..cmake
et puis le problème est LLVMDips. Si j'ai aussi corrigé le chemin d'accès à ce fichier, j'obtiensCMake Error at main/LLVMConfig.cmake:127 (message): Library 'jit' not found in list of llvm libraries.
.cmake -DCMAKE_PREFIX_PATH=/path/to/llvm/share/llvm/cmake .
. Hmm, ou était-ce CMAKE_MODULE_PATH... pas sûr. BTW, il est préférable d'utiliser la deuxième extrait de code (qui utilise find_package()).La réponse de arrowdodger me conduire dans le droit chemin 🙂 Parce que
llvm_map_components_to_libraries
n'a pas fonctionné comme prévu, j'ai eu à faire ce qu'il fait manuellement ce qui est de trouver le bon ordre des dépendances. Je suis venu avec cette:Et puis je n'ai eu quelques problèmes avec le debug/release lib pour
LLVMX86Utils
(_ITERATOR_DEBUG_LEVEL
).