Как собрать последнюю лязг-приборку?

Я пытался создать clang-tidy из источников, но он жалуется на неопределенный Команда CMake:

CMake Error at clang-apply-replacements/CMakeLists.txt:5 (add_clang_library):
  Unknown CMake command "add_clang_library".


CMake Warning (dev) in CMakeLists.txt:
  No cmake_minimum_required command is present.  A line of code such as

    cmake_minimum_required(VERSION 3.9)

  should be added at the top of the file.  The version specified may be lower
  if you wish to support older CMake versions for this project.  For more
  information run "cmake --help-policy CMP0000".
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Configuring incomplete, errors occurred!

Как я могу собрать clang-tidy или, альтернативно, как я могу установить последнюю версию на macOS?


person ruipacheco    schedule 13.11.2017    source источник
comment
См. Также Noloader | build-llvm на GitHib. Это сценарий оболочки для загрузки и сборки LLVM и компонентов. На момент написания этой статьи он собирает архивы архива последней версии, а именно 7.0.0. Как минимум, он выполняет загрузку и правильно настраивает структуру каталогов, чтобы вы не тратили на это время. (Проект LLVM должен предоставить подобный сценарий для использования всеми разработчиками).   -  person jww    schedule 16.11.2018


Ответы (5)


РЕДАКТИРОВАТЬ: этот ответ устарел - проект LLVM перемещен в единый репозиторий git по адресу https://github.com/llvm/llvm-project. См. Ответы ниже для получения обновленных инструкций.


clang-tidy предназначен для создания внутри проверки llvm / clang и зависит от макросов CMake из проекта llvm. Вы должны проверить репо llvm, затем репо clang внутри llvm/tools/clang, затем репо clang-tools-extra внутри llvm/tools/clang/tools/extra. Затем вы можете запустить CMake в каталоге верхнего уровня, и make clang-tidy должен работать.

Если вы не заинтересованы в создании его самостоятельно, похоже, что формула Homebrew для LLVM также включает дополнительные инструменты: https://github.com/Homebrew/homebrew-core/blob/382d3defb5bc48ce2dccd17261be70c4ada9a124/Formula/llvm.rb#L181

person jtbandes    schedule 13.11.2017
comment
Итак, мне нужно проверить clang внутри llvm / tools, а затем clang-tools-extra внутри llvm / clang / tools / extra? Всего 3 кассы 3 репозитория? - person ruipacheco; 13.11.2017

Актуальные шаги:

git clone https://github.com/llvm/llvm-project.git
cd llvm-project
mkdir build 
cd build
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLLVM_ENABLE_PROJECTS="clang-tools-extra" ../llvm
make install-clang-tidy

Справка, ниндзя и другие сведения: my собственное сообщение в блоге.

person YvesgereY    schedule 05.09.2019
comment
Пробовал сегодня, но make пожаловался, что нет цели install-clang-tidy. - person Per Mildner; 23.01.2020
comment
@PerMildner Попробуйте решение от 9cvele3, у меня оно сработало на llvm 10.0 - person Vector; 09.05.2020

@jtbandes: Спасибо за информацию.

Я хотел бы поделиться этими подробными шагами для нас, новичков:

1. Загрузите выпущенные исходные коды со страницы со страницы загрузки LLVM.

2. Разместите каждый из них в соответствующем каталоге:

$ tar -zxvf <download_dir_path>/llvm-6.0.1.src.tar.xz
$ cd llvm-6.0.1.src/tools
$ tar -zxcf <download_dir_path>/cfe-6.0.1.src.tar.xz
$ cd llvm-6.0.1.src/tools/cfe-6.0.1.src/tools
$ tar -zxvf <download_dir_path>/clang-tools-extra-6.0.1.src.tar.xz

Результаты в каталоге llvm-6.0.1.src/tools/cfe-6.0.1.src/tools/clang-tools-extra-6.0.1.src/clang-tidy; Что неверно. lang-tools-extra-6.0.1.src необходимо переименовать в extra (как указано в @jtbandes).

3. Переименуйте его или укажите символическую ссылку:

$ cd llvm-6.0.1.src/tools/cfe-6.0.1.src/tools
$ mv clang-tools-extra-6.0.1.src extra
or
$ ln -s clang-tools-extra-6.0.1.src extra

Путь llvm-6.0.1.src/tools/cfe-6.0.1.src/tools/extra/clang-tidy теперь должен быть действительным

4. Постройте:

$ cd llvm-6.0.1.src
$ mkdir build
$ cd build
$ cmake ..
$ make 

Все должно быть сделано без ошибок и предупреждений.

5. Выходные данные сборки:

Результат сборки можно найти в llvm-6.0.1.src/build/bin.

person natersoz    schedule 06.04.2018
comment
Хорошо объяснено ... за исключением того, что я получил сообщение об ошибке. Transforms / IPO / PassManagerBuilder.cpp: 835: undefined ссылка на 'llvm :: createSLVPectorizerPass ()', затем collect2: error: ld вернул 1 статус выхода - person Mine; 19.05.2018
comment
Под какой платформой вы строили? - person natersoz; 20.05.2018
comment
У вас есть тип в командах detar. Должно быть zxvf, а не zxcf. Также есть еще одна опечатка, где написано lang-tools-extra-6.0.1.src вместо clang-tools-extra-6.0.1.src. - person dawid; 17.12.2019

У меня была та же проблема, что и у Пера Милднера. Got решается с помощью слегка измененного кода, опубликованного YvesgereY (у меня недостаточно репутации, чтобы опубликовать комментарий к этому ответу, поэтому вместо этого я получил новый ответ).

Короче в cmake добавил -G "Unix Makefiles". Без этой опции make-файл не будет создан. Также я использовал -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;". Это не сработало, когда был указан только clang-tools-extra.

Вот весь фрагмент:

git clone https://github.com/llvm/llvm-project.git
cd llvm-project
mkdir build 
cd build
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;" ../llvm
make -j8 install-clang-tidy
person 9cvele3    schedule 13.02.2020
comment
Вы должны знать, что RelWithDebInfo приведет к большому clang-tidy объемом 1,8 ГБ. Лучше вместо этого использовать только Release. - person 9cvele3; 14.02.2020
comment
Мне нужно было добавить -DLLVM_ENABLE_LIBXML2=OFF на OSX - person wreckgar23; 15.02.2021

Для всех, кто ищет последние (LLVM 11) инструкции по сборке Windows (убедитесь, что CMake, Visual Studio 2019 и git установлены и установлены в PATH):

git clone --config core.autocrlf=false https://github.com/llvm/llvm-project.git

cd llvm-project
mkdir build
cd build

cmake -G "Visual Studio 16 2019" -Thost=x64 -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" ../llvm
cmake --build . --target clang-tidy --config RelWithDebInfo --parallel
cmake --build . --target clang-query --config RelWithDebInfo --parallel
person evg656e    schedule 08.02.2021