【问题标题】:LLVM3.8 Makefile.config, Makefile.common and Makefile.rule missing in build folder构建文件夹中缺少 LLVM3.8 Makefile.config、Makefile.common 和 Makefile.rule
【发布时间】:2016-05-24 10:33:58
【问题描述】:

所以我正在学习 llvm,我决定使用从 LLVM site 下载的 tar 构建 3.8。

一切正常,我设法在单独的构建文件夹中构建源代码。

(After downloading all the sources)
$cd llvm3.8/build
$cmake -G "Unix Makefiles" ../llvm
$make -j 4
$make install

所以我的目录看起来有点像这样:

llvm3.8/ 
llvm3.8/build 
llvm3.8/llvm

在学习如何编写 LLVM 通行证时,我注意到我的构建文件夹缺少这些文件:

  • Makefile.config
  • Makefile.common
  • Makefile.rule

我在为已实现的通行证编写的 Makefile 中使用。

我所知道的是源有这些文件:

$cd llvm3.8/llvm
$ls:
CMakeLists.txt      README.txt      llvm.spec.in
CODE_OWNERS.TXT     autoconf        projects
CREDITS.TXT         bindings        resources
LICENSE.TXT         cmake           test
LLVMBuild.txt       configure       tools
Makefile            docs            unittests
Makefile.common     examples        utils
Makefile.config.in  include
Makefile.rules      lib

虽然我的构建文件夹没有。

$ cd llvm3.8/build
$ ls 
CMakeCache.txt          cmake                   libexec
CMakeFiles              cmake_install.cmake     projects
CPackConfig.cmake       compile_commands.json   share
CPackSourceConfig.cmake docs                    test
DummyConfigureOutput    examples                tools
LLVMBuild.cmake         include                 unittests
Makefile                install_manifest.txt    utils
bin                     lib

我的构建文件夹是否包含它应该包含的内容? 也许通行证必须写在来源llvm3.8/llvm

感谢您的帮助。

【问题讨论】:

标签: makefile llvm llvm-clang


【解决方案1】:

你应该把你的通行证写在 llvm/lib/Transforms/YourPassName

在构建中创建一个目录:

mkdir -p llvm3.8/build/lib/Transforms/YourPassName

我建议你使用 cmake。因为 autoconf 将在 llvm3.9 中被弃用。对于它:

在 llvm/lib/Transforms/CMakeLists.txt 中添加条目

add_subdirectory(YourPassName)

输入条目后,在 llvm/lib/Transforms/YourPassName 中创建 CMakeLists.Txt,就像其他 llvm 通行证一样。

现在使用

cmake ../llvm3.8

从 pass 目录内部:

make

另外,如果您已经安装了 llvm 并且想要独立运行,请使用此答案中给出的方法:https://stackoverflow.com/a/37308946/4946286

【讨论】:

  • 只是为了完成你的答案,因为它帮助我理解了我的错误:1) 将你的 Pass 添加到 llvm/lib/Transforms/MyPass --> MyPass。 cpp + CMakeList.txt 2) 在 llvm/lib/Transforms/CMakeList.txt 中添加条目 --> add_subdirectory(MyPass) 3) 从 build 文件夹的根目录运行 make。这会在 build/lib/Transforms 中创建一个名为 MyPass 的文件夹和 LLVMMyPass.so 库,然后您可以使用opt -load build/lib/LLVMMyPass.so load。为了清楚起见,在构建上运行 make 不会重新编译所有内容,只会重新编译您添加的 pass。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-26
  • 1970-01-01
相关资源
最近更新 更多