Как создать clang/examples/PrintFunctionNames?

Мне нужен простой пример, чтобы начать использовать 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. Итак, как создать этот плагин?

Ответ 1

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

Ответ 2

Скорее всего, у вас будет ваш багаж 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-optimized --with-optimize-option = -Os --enable-assertions --disable-bootstrap --disable-multilib --enable-jit --enable-threads --no-create --no-рекурсии

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

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

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

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

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

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

сделать тулт

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

сделать BUILD_EXAMPLES = '1'

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

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

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

LLVM Top:

сделать BUILD_EXAMPLES = '1'//для примеров LLVM  cd tools/clang  make BUILD_EXAMPLES = '1'//для конкретных примеров Clang

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

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

Ответ 3

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

  • My build dir находится внутри исходного каталога (т.е. cd llvm; mkdir build), но я не думаю, что он имеет значение.
  • Я выпустил cmake так:

    cd build

    cmake -DLLVM_BUILD_EXAMPLES = 1 -DCLANG_BUILD_EXAMPLES = 1..

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

find -iname '*printfunctionname*'
./lib/PrintFunctionNames.so
...