Войти
ФлеймФорумПрограммирование

Помогите настроить билд-сервер для Windows + Clang

Страницы: 1 2 3 Следующая »
#0
8:47, 24 апр. 2019

Добрый день

У нас есть необходимость собирать exe/dll/lib для Win32 и Win64. Есть так же необходимость собирать статические либы для Android и iOS. Поэтому был выбран clang, с ним меньше всего проблем с кросскомпиляцией, по крайней мере на уровне lib без ОС-специфичных функций. Слышал, gcc хорошо делает кросскомпиляцию, но у нас заложены автотесты под Win32 и Win64, работая с другими приложениями в окружении.

Хотелось бы делать сборку по cmake. Мы установили cmake, ninja, clang. И тут начались проблемы одна за другой. То cmake работает только с clang-cl, то либы не находит. Установили VisualC++ (кстати можно обойтись без этого?), но и там начались проблемы, например, не находит либы под x86.

В общем, надоело это извращение. Подскажите лучшие практики, как настроить наконец cmake-компиляцию. Вариант компиляции под msvc не рассматривается - нужен gcc-like компилятор.


#1
(Правка: 9:26) 9:23, 24 апр. 2019

OleAutomator
> Установили VisualC++ (кстати можно обойтись без этого?)
вроде, компилятор сейчас есть в комплекте windows sdk

у нас под винду собирает студийный компилятор, под линупс — gcc. для него генерится мейкфайл из студийного vcxproj, используя кастомный скрипт на питоне. наверное, проще было бы поставить во главу всего cmake, но так исторически сложилось, что у нас первичным сделался студийный проект.

#2
9:38, 24 апр. 2019

Нужен gcc-like компилятор. Есть требования по интрисинкам, соглашениям о вызове и ассемблеру на будущее. Поэтому брать MSVC просто не не нужно. VisualC++ мы установили, чтобы clang находил стандартные либы. Если можно как-то обойтись без этого - слушаю.

#3
9:55, 24 апр. 2019

MinGW тоже не вариант. Насколько я понял, он не умеет собирать либы под другие платформы

#4
9:56, 24 апр. 2019

OleAutomator
> но и там начались проблемы, например, не находит либы под x86.

Там может вы ему просто не то подсовываете?
Нередкая ошибка смотреть на папку типа x86_64-w64-mingw32 и думать что это x86, а не x64 из-за первых букв.

#5
10:30, 24 апр. 2019

Сейчас сборка под x64 выглядит так:

1. "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
2. cmake -H. -Bbuild -DCMAKE_C_COMPILER="clang-cl" -DCMAKE_BUILD_TYPE=Debug -G Ninja
3. cd build
4. ninja

Как при этом собрать под x86 - не понятно. Эксперименты с аргументом vcvarsall.bat результата не дали. Можно ли минимизировать влияние VisualC++ (таки здоровая штука, жалко места на билд сервере) - не понятно.

#6
10:36, 24 апр. 2019

OleAutomator
> Насколько я понял, он не умеет собирать либы под другие платформы
В смысле? Dll не умеет собирать? Нормально собирает. Собственно других вариантов по-моему и нет - у clang нет своих лидеров, tdm давно загнулся, либо mingw либо visualc.

#7
10:38, 24 апр. 2019

https://stackoverflow.com/questions/54539682/how-to-set-up-cmake-… ed-on-windows
https://gitlab.kitware.com/cmake/cmake/issues/18880

#8
11:23, 24 апр. 2019

kipar
Нет, статические либы. Ряд *.c файлов мы компилируем в obj, а потом собираем в статические либы. Под разные платформы

#9
11:26, 24 апр. 2019

Faceroll

Это для андроид. А нам бы хотя бы под винду начать собираться нормально )

#10
12:13, 24 апр. 2019

OleAutomator
mingw, очевидно, собирает только под винду. И статические либы, и динамические и что угодно. Под другие платформы собирает обычный гцц.

#11
12:15, 24 апр. 2019

kipar
Clang собирает под всё

#12
22:35, 24 апр. 2019

OleAutomator
У нас в конторе с++ проект, билд сервер тимсити, короче, под Винду запускаешь батник, есть два, в зависимости от разрядности, они это обертка над versal батником. Сам проект qt, он через qmake формирует для проекта Мэйк файлы сборки дальше. Для андроида нужно выставлять энвайромент переменные ndk и прочее.

#13
23:57, 24 апр. 2019

MAMOHT-92

Спасибо, но нам cmake нужен. Кстати интересно, можно ли из-под винды собирать бинарники под линукс? И можно ли обойтись малой кровью, собирать бинарники для винды, не прибегая к помощи установки тяжелых продуктов типа VC++

#14
7:26, 25 апр. 2019

OleAutomator
cygwin же

Страницы: 1 2 3 Следующая »
ФлеймФорумПрограммирование