几周前我在debian wheezy上编译并安装了LLVM(configure&make),现在尝试从源代码编译llvm-mutate pass。 AFAICC,llvm-mutate跟随cmake out of source pass build instructions。
在尝试构建llvm-mutate时
mkdir build
cd build
cmake -DCMAKE_MODULE_PATH=/usr/local/share/llvm/cmake ../
我明白了:
- 忽略Mutate - 此平台不支持可加载模块。
嗯? opt和可加载的传递(在llvm_trunk / build / Debug + Asserts / lib / xxx.so中)存在且工作(已使用configure&make编译,而不是cmake)。
所以这个问题似乎与cmake有关?其他人在使用cygwin:here时遇到了这样的问题
任何的想法?谢谢Alex
AddLLVM
cmake模块需要一些先决条件。添加到CMakeLists.txt:
# AddLLVM needs these
set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin)
set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib)
include(HandleLLVMOptions) # important: matches compiler flags to LLVM/Clang build
include(AddLLVM)
一些灵感来自this message。
只是为了完整性,如果有人会遇到这个错误。此错误同时在LLVM 3.8.0中得到修复,因此您只需包含AddLLVM即可构建插件。 HandleLLVMOption包含文件仅对如上所述的帖子中获得正确的编译器标志有帮助。
添加到alexei的reply。
您可以在list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")
行之前的CMakeLists.txt
文件中添加include(AddLLVM)
,然后在PATH
中为llvm-config
添加LLVM二进制目录,调用cmake as
CXX=clang++ cmake -DLLVM_DIR=$(llvm-config --prefix)/share/llvm/cmake ..