Size: a a a

2020 September 14

OZ

Olzhas Zhumabek in pro.cxx
Jefferson
Я пол дня LLVM собирал. Собрал, без ошибок. Сейчас нужно как-то clang собрать.
если что там можно лишние таргеты убрать. Если вам нужно лишь под х86, то лучше указать только х86
источник

J

Jefferson in pro.cxx
CLANG_INSTALL_PREFIX - D:/CLANG_BUILD
LLVM_DIR - D:/LLVM/llvm/cmake/modules
LLVM_TABLEGEN_EXE - D:/LLVM/build/Debug/bin/llvm-tblgen.exe

Что-то ещё забыл в конфигурации изменить?
источник

OZ

Olzhas Zhumabek in pro.cxx
LLVM_TARGETS_TO_BUILD="X86"
источник

J

Jefferson in pro.cxx
Olzhas Zhumabek
LLVM_TARGETS_TO_BUILD="X86"
Добавил, сейчас попробую снова проект собрать
источник

J

Jefferson in pro.cxx
источник

J

Jefferson in pro.cxx
Ещё нигде что-то не могу найти уже собранные либы clang'а х86 под винду. Мб поделится кто-то?
источник

ПК

Побитый Кирпич... in pro.cxx
Иван Срайчук
Может была у кого такая проблема.
Пытаюсь из длл сделать запрос, использую curl.
На функции curl_easy_perform() получаю terminate(),  кто-то сталкивался с таким?
Сначала убедись, что фактор длл тут что то решает
источник

PS

Pavel Samolysov in pro.cxx
Проще всего собрать из исходников. На странице релизов под винду они не выкладывают(ли) библиотеки, мотивируя это тем, что там только минимальный набор для использования clang в качестве компилятора, хотя в линуксовых сборках статические библиотеки есть.

Вот моя строка конфигурации LLVM/clang (собирал и из транка, и из различных бранчей)
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS="/arch:AVX2" -DCMAKE_CXX_FLAGS="/arch:AVX2"
-DCMAKE_INSTALL_PREFIX=C:/Dev/llvm/llvm-11  -DLLVM_ENABLE_PROJECTS=clang;lld -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_OPTIMIZED_TABLEGEN=ON -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_INCLUDE_TESTS=ON  -G"Ninja" ../llvm/llvm
(собирает в релиз, но со включенными асертами, удобно, если разрабатываешь расширения для ЛЛВМ, копаешься в потрохах, если не нужно, то строчки с -DLLVM_OPTIMIZED_TABLEGEN=ON -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_INCLUDE_TESTS=ON можно убрать)

потом clang --build . --target install -j <зависит от машины, например 4>
источник

J

Jefferson in pro.cxx
Pavel Samolysov
Проще всего собрать из исходников. На странице релизов под винду они не выкладывают(ли) библиотеки, мотивируя это тем, что там только минимальный набор для использования clang в качестве компилятора, хотя в линуксовых сборках статические библиотеки есть.

Вот моя строка конфигурации LLVM/clang (собирал и из транка, и из различных бранчей)
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS="/arch:AVX2" -DCMAKE_CXX_FLAGS="/arch:AVX2"
-DCMAKE_INSTALL_PREFIX=C:/Dev/llvm/llvm-11  -DLLVM_ENABLE_PROJECTS=clang;lld -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_OPTIMIZED_TABLEGEN=ON -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_INCLUDE_TESTS=ON  -G"Ninja" ../llvm/llvm
(собирает в релиз, но со включенными асертами, удобно, если разрабатываешь расширения для ЛЛВМ, копаешься в потрохах, если не нужно, то строчки с -DLLVM_OPTIMIZED_TABLEGEN=ON -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_INCLUDE_TESTS=ON можно убрать)

потом clang --build . --target install -j <зависит от машины, например 4>
Благодарю, уже собрал.
Тестирую на таком коде:
#include <iostream>
#include <clang-c/Index.h>

int main(int argc, char** argv)
{
   CXIndex index = clang_createIndex(false, true);
   CXTranslationUnit unit = clang_parseTranslationUnit(index,"main.cpp", argv + 1, argc - 1,0, 0, CXTranslationUnit_None);
   if (unit != 0)
       std::cout << "Translation unit successfully created" << std::endl;
   else
       std::cout << "Translation unit was not created" << std::endl;
   clang_disposeTranslationUnit(unit);
   clang_disposeIndex(index);
}

Ловлю ошибки "clang_createIndex - ссылка на неразрешенный внешний символ ..."
Либы подключил вот эти:
clangFrontend.lib;clangDriver.lib;clangSema.lib;clangAnalysis.lib;clangRewrite.lib;clangAST.lib;clangParse.lib;clangLex.lib;clangBasic.lib;LLVMCore.lib;LLVMMC.lib;LLVMSupport.lib;
Ещё что-то забыл?
источник

PS

Pavel Samolysov in pro.cxx
А, да, если конфигурация не прошла - крайне рекомендую перед следующей попыткой *обязательно почистить билд-директорию*! Так написаны cmake-скрипты, что в следующий раз не специфицируют /MD и соберутся библиотеки, которые будет не удобно использовать для своих приложений (будет /MD - /MT микс)
источник

PS

Pavel Samolysov in pro.cxx
Ошибка уже при линковке? Это все, что указал ненужно, ну кроме может быть LLVMSupport. Нужна libclang - сишная обертка над апи Clang'а. Она, кстати, динамическая, потом нужно будет не забыть положить ее dll в каталог с собранным приложением, ну или прописать, чтобы Windows находила.
источник

J

Jefferson in pro.cxx
Pavel Samolysov
Ошибка уже при линковке? Это все, что указал ненужно, ну кроме может быть LLVMSupport. Нужна libclang - сишная обертка над апи Clang'а. Она, кстати, динамическая, потом нужно будет не забыть положить ее dll в каталог с собранным приложением, ну или прописать, чтобы Windows находила.
Собрал, спасибо ещё раз!
источник

MZ

Max Ziua in pro.cxx
У кого-то есть нормальные примеры асинхронного grpc на плюсах?
источник

SE

Stanislav Ershov in pro.cxx
Jefferson
Благодарю, уже собрал.
Тестирую на таком коде:
#include <iostream>
#include <clang-c/Index.h>

int main(int argc, char** argv)
{
   CXIndex index = clang_createIndex(false, true);
   CXTranslationUnit unit = clang_parseTranslationUnit(index,"main.cpp", argv + 1, argc - 1,0, 0, CXTranslationUnit_None);
   if (unit != 0)
       std::cout << "Translation unit successfully created" << std::endl;
   else
       std::cout << "Translation unit was not created" << std::endl;
   clang_disposeTranslationUnit(unit);
   clang_disposeIndex(index);
}

Ловлю ошибки "clang_createIndex - ссылка на неразрешенный внешний символ ..."
Либы подключил вот эти:
clangFrontend.lib;clangDriver.lib;clangSema.lib;clangAnalysis.lib;clangRewrite.lib;clangAST.lib;clangParse.lib;clangLex.lib;clangBasic.lib;LLVMCore.lib;LLVMMC.lib;LLVMSupport.lib;
Ещё что-то забыл?
а нафига ручками ? есть же find_package(clang) и он там уже все зависимости проставит нужные
источник

f

fulcanelly in pro.cxx
Stanislav Ershov
а нафига ручками ? есть же find_package(clang) и он там уже все зависимости проставит нужные
ну нафиг ваш cmake
источник

SE

Stanislav Ershov in pro.cxx
set_target_properties(clangTooling PROPERTIES
 INTERFACE_LINK_LIBRARIES "clangAST;clangASTMatchers;clangBasic;clangDriver;clangFormat;clangFrontend;clangLex;clangRewrite;clangSerialization;clangToolingCore;LLVMOption;LLVMFrontendOpenMP;LLVMSupport"
)
источник

SE

Stanislav Ershov in pro.cxx
тип того
источник

PS

Pavel Samolysov in pro.cxx
Поэтому я и пилю свой bazel-llvm-bridge, чтобы все эти зависимости зависимостей зависимостей направлялись в BUILD файл. И смак не нужен
источник

PS

Pavel Samolysov in pro.cxx
Ну т.е. нужен, чтоб сам llvm/clang собрать и спасибо, свободен.
источник

PS

Pavel Samolysov in pro.cxx
Stanislav Ershov
а нафига ручками ? есть же find_package(clang) и он там уже все зависимости проставит нужные
У человека нет статических библиотек LLVM под его платформу.
источник