【发布时间】:2011-11-27 15:49:04
【问题描述】:
我很难让 LLVM 参与一个新项目。我已经尝试了来自http://old.nabble.com/CMake-sample-project--td28871124.html 的多个 CMakeLists.txt 示例,并在上面花费了很多时间。
我可以完美地构建 LLVM 和示例,但我想要一个不在 LLVM 文件夹内的项目。我在 Windows 7 上使用 Visual Studio 2010。现在我的设置是这样的:
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 工作正常并创建解决方案文件等,但是当我编译项目时,我从 LLVMX86CodeGen.lib 中得到了很多未解决的外部和不匹配。我也明白了:
defaultlib 'MSVCRT' 与其他库的使用冲突;使用 /NODEFAULTLIB:library
问题可能与以下有关:
- 我从列表中删除了LLVMSystem,因为它没有找到。
- 如示例所示,我编译的库位于 /lib/Release/ 而不是 /lib/ 中。
对上述问题的任何帮助将是一个很大的帮助! :)
【问题讨论】: