c - 如何在使用 mingw32 构建 llvm 时禁用 llvm-c-test

标签 c llvm

我正在尝试使用 cmake 和 g++4.8.1 在 mingw32 (www.mingw.org) 上构建 llvm-3.4 稳定版本。我遇到了这个错误:

[ 98%] Building C object tools/llvm-c-test/CMakeFiles/llvm-c-test.dir/include-al
l.c.obj
In file included from c:/temp/llvm-3.4/tools/llvm-c-test/include-all.c:33:0:
C:/temp/llvm-3.4/include/llvm-c/lto.h:158:54: error: unknown type name 'off_t'
                                     size_t map_size, off_t offset);

经过一番研究,发现这是由于子目录llvm-c-test使用非标准类型off_t,但要求自己使用标准编译造成的C,并且 llvm-c-test 不是必需的。

我尝试通过在 tools/CMakeList.txt 中注释掉 llvm-c-test 来禁用它。但我仍然收到此错误。

我的问题是,如何禁用 llvm-c-test 的编译或以其他方式解决此错误。

最佳答案

像您一样,我确信必须有一种正确的方法来使用 CMake 禁用目标。我最终放弃了 CMake(至少对于 MinGW)并使用 makefile 配置脚本。使用此构建方法的说明是 here .

然后,要禁用 llvm-c-test 目标,您只需从 < llvm >/tools/Makefile 中的 PARALLEL_DIRS 变量末尾删除它即可:

PARALLEL_DIRS := opt llvm-as llvm-dis llc llvm-ar llvm-nm llvm-link \
             lli llvm-extract llvm-mc bugpoint llvm-bcanalyzer llvm-diff \
             macho-dump llvm-objdump llvm-readobj llvm-rtdyld \
             llvm-dwarfdump llvm-cov llvm-size llvm-stress llvm-mcmarkup \
             llvm-profdata llvm-symbolizer obj2yaml yaml2obj llvm-c-test

another problem目前使用 MinGW 构建(来自 llvm trunk),您可能也会遇到这种情况。 make 命令行修复似乎有效。

关于c - 如何在使用 mingw32 构建 llvm 时禁用 llvm-c-test,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21794237/

相关文章:

c++ - 我如何打印到 LLVM 中的字符串

c++ - llvm::make_unique 的目的是什么?

c++ - llvm clang 编译器上的 dynamic_cast 失败

c - 我的链接寄存器出错了吗?

python - 使用 C API 创建 Python 包

assembly - MIPS vs Intel x86 vs LLVM是第一种要学习的汇编语言?

ios - 我需要哪个版本的 LLVM 和 XCode 才能在 Objective-C 中使用 Array Literal Syntax?

c - 使用 C 将文本文件中的内容扫描到 2 个数组中

c - 向远程串行发送 2 个字节的十六进制

c - 如何创建 scanf() 的替代品