我正在尝试使用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_DIRECTORY
和CMAKE_Fortran_MODDIR_FLAG
,但我看不到在哪里可以指定所有内容都转到build
。 (配置和生成文件非常简单 - 我cd
进入目录并运行configure
;或者我只是说make -f llvm/projects/libcxx/Makefile
并且事情正常。)
如何告诉Cmake配置llvm/projects/libcxx
中的内容,如何告诉它生成指定build
作为构建和输出目录的Makefile?
答案 0 :(得分:0)
您无法配置子目录,因为父CMakeLists.txt
可能包含子目录CMakeLists.txt
的必要配置代码。
您可以做的是配置所有内容,但仅针对make
运行libcxx
:
cd build/projects/libcxx && make
这将构建libcxx及其所有依赖项,但例如tools
中的内容将不会构建。