LLVM项目的示例CMakeLists.txt文件 [英] Sample CMakeLists.txt file for LLVM project

查看:1117
本文介绍了LLVM项目的示例CMakeLists.txt文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我很难让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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆