Как собрать clang / examples / PrintFunctionNames? - PullRequest
11 голосов
/ 07 июня 2011

Мне нужен простой пример, чтобы начать использовать clang. Я скачал llvm и clang и собрал:

mkdir llvm-build
cd llvm-build
../llvm/configure
make

Я пытался собрать PrintFunctionNames из примеров clang, но получил сообщение об ошибке:

.. / .. / .. / .. / Makefile.common: 61: ../../../../Makefile.config: Нет такого файла или каталога ../../../../Makefile.common:69: /Makefile.rules: Нет такого файла или каталога make: * Нет правила для создания цели `/Makefile.rules '. Стоп.

Файл Readme говорит, что требуется только make. Так как же построить этот плагин?

Ответы [ 4 ]

9 голосов
/ 08 июня 2011

Перейдите в llvm-build / tools / clang и запустите "make BUILD_EXAMPLES = 1".

2 голосов
/ 25 августа 2011

Скорее всего, у вас будет проверка ствола LLVM, а также по пути инструментов, который вы также проверили, ствол Clang [объяснено в разделе сборки Clang через http://clang.llvm.org/get_started.html.

Руководство по сборке Makefile: http://llvm.org/docs/MakefileGuide.html

В OS X настройка сборки немного отличается, но в Debian Linux я собираю ее ежедневно следующим образом:

.. / trunk / configure --enable-target = x86_64, arm, cpp, cbe --with-built-clang --enable-pic --enable-polly --enable-shared --with-cxx- include-arch = x86_64 --enable-оптимизированный --with-optimize-option = -Os --enable-assertions --disable-bootstrap --disable-multilib --enable-jit --enable-threads --no-create --no-рекурсии

затем примените команду make -j (n + 1 число ядер) к команде для моей системы Pentium D 945:

make [строит против autotools make -j (n + 1) не всегда строит llvm чисто, как против cmake . Поэтому, если вы хотите запустить все ядра, ожидайте, что возможность запуска make -j (n + 1) более одного раза приведет к чистой сборке.

Стандартная форма без доступа к нескольким ядрам:

make BUILD_EXAMPLES = '1' // Прочитать примечание ниже

всегда приводит к чистой сборке, и если она не сообщает об ошибке в LLVM.

Примечание. Если вы на верхнем уровне, вы можете svn обновить ствол llvm, ствол проекта-теста и ствол clang следующим образом:

сделать сундук

Затем снова запустите make и теперь, когда BUILD_EXAMPLES = 1 настроено заранее.

make BUILD_EXAMPLES = '1'

ПРИМЕЧАНИЕ. Автоинструменты позволяют настраивать BUILD_EXAMPLES = '1', но игнорируют флаг, когда вы запускаете make, если вы явно не включаете BUILD_EXAMPLES = '1' после make в командной строке.

В верхней части дерева LLVM, которое вы строите против запуска, make BUILD_EXAMPLES = '1' создаст конкретные примеры LLVM, затем, войдя в путь сборки / tools / clang, вы должны снова запустить make BUILD_EXAMPLES = '1', чтобы собрать примеры Clang.

Следовательно:

LLVM Top:

make BUILD_EXAMPLES = '1' // для примеров LLVM CD инструменты / лязг make BUILD_EXAMPLES = '1' // для конкретных примеров Clang

Проверьте примеры установки в / usr / local / bin для LLVM и / usr / local / lib / для Clang.

Если вы используете CMAKE, расположение бинарных примеров по умолчанию находится в / usr / local / examples

1 голос
/ 18 сентября 2015

Я следовал инструкциям на http://clang.llvm.org/get_started.html с двумя исключениями:

  1. Мой каталог сборки находится внутри исходного каталога (то есть cd llvm; сборка mkdir), но я не думаю, чтоэто актуально.
  2. Я выдал cmake следующим образом:

    cd build

    cmake -DLLVM_BUILD_EXAMPLES = 1 -DCLANG_BUILD_EXAMPLES = 1 ..

После этого (и, конечно, компиляция (make -j8)) я могу найти примеры в каталоге сборки:

find -iname '*printfunctionname*'
./lib/PrintFunctionNames.so
...
0 голосов
/ 21 февраля 2014

Вчера я пытался сделать нечто подобное: получить список методов в классе, используя clang , и все прошло успешно.Может быть, мой пост помогает и здесь.Моя лучшая помощь была в этом Учебнике по AST Matchers .

...