LLVM项目的示例CMakeLists.txt文件 [英] Sample CMakeLists.txt file for LLVM project
问题描述
我很难让LLVM在新项目上工作。我已尝试过 http://old.nabble.com/CMake-示例中的多个CMakeLists.txt示例-project - td28871124.html 并使用了很多时间。
I am having a hard time to get LLVM to work on a new project. I've tried multiple CMakeLists.txt examples from http://old.nabble.com/CMake-sample-project--td28871124.html and used a lot of time on it.
我可以完全构建LLVM和示例,但我想要一个项目不在LLVM文件夹内。现在我的设置是这样的:
I can build LLVM and the examples perfectly but I want a project which is not inside the LLVM folder. I use Visual Studio 2010 on Windows 7. Right now my setup is this:
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
)
等等,但是当我编译项目,我得到了很多未解决的外部和LLVMX86CodeGen.lib不匹配。我也得到这个:
CMake
works fine and creates a solution file etc. but when I compile the project I get a lot of unresolved externals and mismatches from LLVMX86CodeGen.lib. And I also get this:
defaultlib'MSVCRT'与其他库的使用冲突;使用/ NODEFAULTLIB:库
问题可能与以下有关:
- 我移除了 LLVMSystem
从列表中,因为它没有找到。
- 我编译的lib是在/ lib / Release /而不是/ lib /如例子所示。
The problem may have something to do with:
- I removed LLVMSystem
from the list because it was not found.
- My compiled libs is in /lib/Release/ and not /lib/ as the examples show.
任何帮助上述问题将是一个伟大的帮帮我! :
Any help with the above problem would be a great help! :)
推荐答案
arrowdodger的回答让我以正确的方式:)因为 llvm_map_components_to_libraries
没有按预期工作,我不得不做手工做的是找到正确的依赖顺序。我想出了这个:
The answer from arrowdodger lead me in the right way :) Because llvm_map_components_to_libraries
didn't work as expected, I had to do what it does manually which is finding the right order of dependencies. I came up with this:
set (LIBS
${LLVM_LIBRARIES_PATH}/LLVMSupport.lib
${LLVM_LIBRARIES_PATH}/LLVMCore.lib
${LLVM_LIBRARIES_PATH}/LLVMMC.lib
${LLVM_LIBRARIES_PATH}/LLVMTarget.lib
${LLVM_LIBRARIES_PATH}/LLVMAnalysis.lib
${LLVM_LIBRARIES_PATH}/LLVMipa.lib
${LLVM_LIBRARIES_PATH}/LLVMTransformUtils.lib
${LLVM_LIBRARIES_PATH}/LLVMInstCombine.lib
${LLVM_LIBRARIES_PATH}/LLVMScalarOpts.lib
${LLVM_LIBRARIES_PATH}/LLVMCodeGen.lib
${LLVM_LIBRARIES_PATH}/LLVMExecutionEngine.lib
${LLVM_LIBRARIES_PATH}/LLVMJIT.lib
${LLVM_LIBRARIES_PATH}/LLVMX86Utils.lib
${LLVM_LIBRARIES_PATH}/LLVMX86Info.lib
${LLVM_LIBRARIES_PATH}/LLVMMCParser.lib
${LLVM_LIBRARIES_PATH}/LLVMX86AsmParser.lib
${LLVM_LIBRARIES_PATH}/LLVMX86AsmPrinter.lib
${LLVM_LIBRARIES_PATH}/LLVMAsmPrinter.lib
${LLVM_LIBRARIES_PATH}/LLVMSelectionDAG.lib
${LLVM_LIBRARIES_PATH}/LLVMX86CodeGen.lib
${LLVM_LIBRARIES_PATH}/LLVMX86Disassembler.lib
${LLVM_LIBRARIES_PATH}/LLVMInterpreter.lib
)
target_link_libraries(main ${LIBS})
只有对于 LLVMX86Utils
( _ITERATOR_DEBUG_LEVEL
)的调试/发布lib有一些问题。
And then I only had some issues with debug/release lib for LLVMX86Utils
(_ITERATOR_DEBUG_LEVEL
).
这篇关于LLVM项目的示例CMakeLists.txt文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!