我正在尝试构建我自己的使用 LLVM 的项目。我在官网(最新版本)下载了源代码和预编译包。
http://releases.llvm.org/download.html
Run Code Online (Sandbox Code Playgroud)
我下载了 :
LLVM source code
Clang for Windows (64-bit)
Run Code Online (Sandbox Code Playgroud)
仅供参考,我不构建 LLVM ......只想使用它!
我按照这里的说明进行操作:http : //llvm.org/docs/CMake.html#embedding-llvm-in-your-project
在以下部分中:“在您的项目中嵌入 LLVM”
所以,我添加了这个代码:
find_package(LLVM REQUIRED CONFIG)
message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
message("LLVM_INCLUDE_DIRS=${LLVM_INCLUDE_DIRS}")
message("LLVM_DEFINITIONS=${LLVM_DEFINITIONS}")
Run Code Online (Sandbox Code Playgroud)
但是我收到了几条 cmake 错误消息,这是我的输出:
-- Using LLVMConfig.cmake in: C:\\Luciad_src\\libs\\LLVM\\cmake\\modules
LLVM_INCLUDE_DIRS=
LLVM_DEFINITIONS=
CMake Error at C:/Luciad_src/libs/LLVM/cmake/modules/LLVM-Config.cmake:31 (list):
list sub-command REMOVE_ITEM requires two or more arguments.
Call Stack (most recent call first):
C:/Luciad_src/libs/LLVM/cmake/modules/LLVM-Config.cmake:256 (is_llvm_target_library)
components/query/CMakeLists.txt:15 (llvm_map_components_to_libnames)
Run Code Online (Sandbox Code Playgroud)
我的脚本或我使用的软件包有问题吗?任何的想法 ?
谢谢你的帮助
您可以拥有LLVMas 二进制或源包。
二进制包不包括 CMake 支持。如果比较两个安装(左侧是二进制,右侧是构建和安装后的源),您可以看到不同之处:
LLVM-5.0.0-win64.exe <=> llvm-5.0.1.src.tar.xz(构建并安装)
因此,您需要先构建并安装源包以获得 CMake 支持。在我的 Windows 机器上,我需要一个具有管理员权限的cmdshell ,一个 Visual Studio 安装,转到下载和提取的源代码并执行以下操作:
> mkdir mybuilddir
> cd mybuilddir
> cmake ..
> cmake --build . --config Release --target INSTALL
Run Code Online (Sandbox Code Playgroud)
如果我现在使用您的 CMake 示例,我会得到:
-- Found LLVM 5.0.1
-- Using LLVMConfig.cmake in: C:/Program Files (x86)/LLVM/lib/cmake/llvm
LLVM_INCLUDE_DIRS=C:/Program Files (x86)/LLVM/include
LLVM_DEFINITIONS=-DLLVM_BUILD_GLOBAL_ISEL -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS -D_SCL_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS -DUNICODE -D_UNICODE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
-- Configuring done
Run Code Online (Sandbox Code Playgroud)