如何配置特定的子目录并构建树?

时间:2015-01-11 04:52:56

标签: makefile cmake llvm libc++

我正在尝试使用LLVM / Clang构建libc ++。我遇到了几个问题。首先,虽然LLVM/Clang支持Makefile和Cmake,但libc ++项目放弃了Makefile支持。所以我坚持使用Cmake这个特定的组件。其次,LLVM / Clang构建基础结构不配置libc ++,所以它不像我想的那样àlacarte 。因此,我需要转动一些旋钮才能使事情发挥作用。

这就是我正在使用的树的样子。源位于llvm(树内),而工件位于build(树外)。

Working directory
  |
  +- build (artifacts and staging)
  |
  +- llvm (source tree)
     |
     +- tools
     |  |
     |  +- Compiler Front End (Clang)
     |
     +- projects
        |
        +- Compiler RT
        |
        +- libcxx
        |
        +- libcxx ABI

我需要运行Cmake并告诉它配置llvm/projects/libcxx中的内容,并告诉Cmake生成Makefiles,构建并进入build下的相应目录。其他所有东西都可以使用Makefile。 (我不清楚“适当的目录”是什么,因为该项目的文档没有告诉我。我接下来将跨越那座桥,但我想从build开始。

我查看了Cmake man pages,但我找不到指定这些简单要求的方法。例如,我可以找到ARCHIVE_OUTPUT_DIRECTORYCMAKE_Fortran_MODDIR_FLAG,但我看不到在哪里可以指定所有内容都转到build。 (配置和生成文件非常简单 - 我cd进入目录并运行configure;或者我只是说make -f llvm/projects/libcxx/Makefile并且事情正常。)

如何告诉Cmake配置llvm/projects/libcxx中的内容,如何告诉它生成指定build作为构建和输出目录的Makefile?

1 个答案:

答案 0 :(得分:0)

您无法配置子目录,因为父CMakeLists.txt可能包含子目录CMakeLists.txt的必要配置代码。

您可以做的是配置所有内容,但仅针对make运行libcxx

cd build/projects/libcxx && make

这将构建libcxx及其所有依赖项,但例如tools中的内容将不会构建。