2015-01-11 3 views
0

Я пытаюсь создать libC++ с LLVM/Clang. Я сталкиваюсь с несколькими проблемами. Во-первых, хотя LLVM/Clang поддерживает как Make-файлы, так и Cmake, проект libC++ отказался от поддержки Makefile. Поэтому я застрял с Cmake для этого конкретного компонента. Во-вторых, инфраструктура LLVM/Clang не настраивает libC++, поэтому ее не à la carte, как я думал. Поэтому мне нужно повернуть ручки, чтобы все работало.Как настроить конкретный подкаталог и построить из дерева?

Вот как выглядит дерево, с которым я работаю. Источники находятся под 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. Все остальное может использовать Makefiles. (Непонятно мне, что такое «соответствующий каталог», так как документация по проекту не говорит мне. Я перейду через этот мост, но я хотел бы начать с build).

Я посмотрел на Cmake man pages, и я не могу найти способ указать эти простые требования. Например, я могу найти ARCHIVE_OUTPUT_DIRECTORY и CMAKE_Fortran_MODDIR_FLAG, но я не вижу, где могу указать, что все идет по адресу build. (Configure and Makefiles довольно просты - я вхожу в каталог и запускаю configure, или просто говорю make -f llvm/projects/libcxx/Makefile, и все просто работает).

Как сообщить Cmake, чтобы настроить то, что находится в llvm/projects/libcxx, и как я могу сказать, что он генерирует Make-файлы, которые определяют build как каталог сборки и вывода?

+1

В чем проблема с 'cd build && cmake ../llvm && make'? – BenPope

ответ

0

Вы не можете настроить подкаталог, потому что родительский CMakeLists.txt может содержать необходимый код конфигурации для подкаталога CMakeLists.txt.

Что вы можете сделать, это настроить все, но запустить make только для libcxx:

cd build/projects/libcxx && make 

Это будет строить libcxx и все это зависимостей, но материал из tools, например, не будет построен.

Смежные вопросы