Войти
ПрограммированиеФорумОбщее

C++ cross-platform build (2 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 1 2 3 Следующая »
#15
1:11, 4 янв. 2017

gammaker
> иногда CMake устаревает и приходится его править.
приведите пример


#16
2:58, 4 янв. 2017

Nomad
> Это ты сейчас про CMake, да? Ясненько, здорово!
нет, про CMake итак ясно что проблем не будет. Основная проблема приведения кода в порядок если ты долго писал только с использованием студийного компилятора, то наверняка найдутся моменты которые придется поправить.

#17
12:09, 4 янв. 2017

Kartonagnick
> приведите пример
Я не про сам CMake, а про проект на его основе. Добавил новый файл в проект студии, а в CMakeLists.txt забыл. Планирую решить эту проблему автоматическим добавлением всех файлов. Но пока там есть лишние файлы, которые в проект включать нельзя. Когда разберусь с ними, сделаю это.

#18
18:03, 4 янв. 2017

gammaker
> Наверное подожду релиза и заведу отдельную конфигурацию для 2017 студии.
В релизе она будет тормозить хуже чем 2015)))

#19
19:37, 4 янв. 2017

gammaker
> Добавил новый файл в проект студии, а в CMakeLists.txt забыл. Планирую решить
> эту проблему автоматическим добавлением всех файлов.
ясно. вообще, именно так и делают:
учат cmake автоматически прицеплять все необходимые файлы,
ресурсы и тп.

#20
21:03, 4 янв. 2017

Kartonagnick
> именно так и делают:
> учат cmake автоматически прицеплять все необходимые файлы,
> ресурсы и тп.
на Qt это делать намного проще

#21
22:38, 4 янв. 2017

/A\
> на Qt это делать намного проще
Qt - фреймворк, который не имеет ни малейшего отношения к системе сборки.

#22
0:50, 5 янв. 2017

Kartonagnick
> Qt - фреймворк
Из него можно выдрать qmake с mkspecs конфигурациями - который работает отдельно от фреймворка и спокойно собирать под любою платформу без бороды из библиотек QT и тд. Это проще чем заморачиваться cmake, а результат тот же.

Kartonagnick
> который не имеет ни малейшего отношения к системе сборки.
Он имеет свою систему сборки, которая позволяет сгенерировать проектные файлы для любого компилятора С++.

#23
1:02, 5 янв. 2017

Kartonagnick
У нас так сделано - мне не нравится, нельзя просто исключить файл из сборки, закоментировав его, добавление нового файла требует запуск cmake, удаление - аналогично, и если забыть его запустить, то иногда получаются зомби-объектники, которые могут генерить кучу странных ошибок, в которые сразу и не въедешь. Но у нас еще все усугубляется тем, что запуск cmake занимает несколько минут, на мелких проектах это должно быть попроще.

#24
1:55, 5 янв. 2017

foxes
> Из него можно выдрать qmake с mkspecs конфигурациями - который работает
> отдельно от фреймворка и спокойно собирать под любою платформу без бороды из
> библиотек QT и тд. Это проще чем заморачиваться cmake, а результат тот же.
qmake - отдельная софтина. qmake и QT - параллельные вселенные.
для того, что бы пользовать qmake, ничего ниоткуда выдирать не нужно.

foxes
> Он имеет свою систему сборки, которая позволяет сгенерировать проектные файлы
> для любого компилятора С++.
оно не имеет своей системы сборки.
qmake, кстати, не умеет "любой компилятор с++".
и вообще - сосёт у cmake по полной.

#25
2:00, 5 янв. 2017

v1adislav
> У нас так сделано - мне не нравится, нельзя просто исключить файл из сборки,
> закоментировав его, добавление нового файла требует запуск cmake, удаление -
> аналогично, и если забыть его запустить, то иногда получаются зомби-объектники,
> которые могут генерить кучу странных ошибок, в которые сразу и не въедешь. Но у
> нас еще все усугубляется тем, что запуск cmake занимает несколько минут, на
> мелких проектах это должно быть попроще.

ну говно у вас, а не сборка.

у нас из сборки искл. файлы, которые имеют прочерк в начале.
ну то есть: _foo.cpp в сборку уже не войдёт.

несколько мин. на запуск cmake, это конечно круто.
хз, чем он у вас там занимаеццо.

#26
2:01, 5 янв. 2017

Kartonagnick
> qmake, кстати, не умеет "любой компилятор с++".
все визуал студии icc (Intel компилятор), borland, mingw, gcc, gcc64 ... все с qmake собирается.
достаточно вызвать qmake, а потом make.

Kartonagnick
> qmake - отдельная софтина. qmake и QT - параллельные вселенные.
> для того, что бы пользовать qmake, ничего ниоткуда выдирать не нужно.
Вообще то она собирается используя конфигурацию QT пакета. Чтобы собрать эту утилиту отдельно ее придется от туда выдрать.

Kartonagnick
> оно не имеет своей системы сборки.
https://habrahabr.ru/post/144127/

В инфраструктуре Qt на сегодняшний день широко используется система сборки Qmake, которая поддерживается официально и все ещё дорабатывается.

https://ru.wikipedia.org/wiki/Qmake
qmake- это утилита из состава Qt

Скажи это все разработчикам QT и авторам подобных статей, а заодно всем тем кто собирает qmake отдельно (точнее пытался это сделать).
#27
2:28, 5 янв. 2017

Kartonagnick
Так кто бы спорил, что говно. Но оно, к сожалению, к этому стремится, если проекту много лет, над ним работает несколько команд (причем там покупали некоторые компании, которые в проект тупо свой код добавляли, as is), все это без должной централизации (в Берлине 3 независимые команды, в Штатах - 2, у каждой свой лид, разные стили, разные строки и контейнеры) + еще автовендоры со своими железками, требованиями и API... У того куска, на котором я специализируюсь - 5 уровней абстракции (3 внутренних, 2 публичных)...
Говорят, это сейчас еще нормально сборка устроена, а вот раньше был Ад. Хотя я тоже не очень понимаю, почему так медленно cmake работает, там всего примерно 10К файлов при полной сборке, ниндзя инкрементально собирает все мгновенно (хотя clion последний раз так и не осилил его открыть). Хотя сейчас пощелкал - блин, там почти 1000 целей для сборки, надо посмотреть, что он там такое генерит...

Ну и переименовывать файлы, чтобы их из сборки исключить - это и без танцов с бубном работает (достаточно расширение поменять, например) - но это же все равно говно.

#28
2:33, 6 янв. 2017

Alprog
Предал микрософт?

#29
18:08, 9 янв. 2017

Код пишу в VIM под Linux или macOS с учетом кроссплатформенности. Храню сорцы в git'е. Периодически включаю компьютер с Windows и в ней под VS фикшу код, если в этом возникает необходимость.

В качестве компиляторов использую:
Linux: clang (debug) / gcc (release).
maOS / iOS / tvOS: clang.
Android: clang.
Web: emscripten (llvm).
Windows: вижловый компилятор.

В качестве генератора, в зависимости от проекта, используется premake, cmake или нативный проект под каждую платформу.

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

Тема в архиве.