Мутные файлы для сборки проектов
От: 00011011  
Дата: 03.03.19 19:23
Оценка: 3 (1) +8 -2 :))) :))) :))) :)))
Это типа крика души Для меня самое сложное в программировании это не собственно программирование, а разобраться с тем, как собрать чужие проекты (как правило open-source) скачанные из инета. Да, я понимаю что у меня наверное совершенно неправильный подход, и наверное никто так не делает.

Скачиваю какой-то проект, с гитхаба например. Хочу собрать. И что я вижу?
Вот например.
Это просто списки файлов (без директорий) которые лежат внутри. Это не исходники. А просто какие-то файлы.

  qbittorrent
.appveyor.yml
.editorconfig
.gitattributes
.gitignore
.travis.yml
5B7CC9A2.asc
AUTHORS
bootstrap.sh
Changelog
CMakeLists.txt
CODING_GUIDELINES.md
codingStyleQtCreator.xml
conf.pri.in
conf.pri.windows
configure
configure.ac
CONTRIBUTING.md
COPYING
INSTALL
macxconf.pri
NEWS
qbittorrent.pro
README.md
TODO
uncrustify.cfg
unixconf.pri
version.pri
winconf.pri


Или вот.
  libtorrent
.doozer.json
.gitignore
.gitmodules
.travis.yml
appveyor.yml
AUTHORS
autotool.sh
bootstrap.sh
build_dist.sh
ChangeLog
clang_tidy.jam
CMakeLists.txt
configure.ac
CONTRIBUTING.rst
COPYING
Jamfile
Jamroot.jam
libtorrent-rasterbar.pc.in
LibtorrentRasterbarConfig.cmake.in
LICENSE
Makefile.am
NEWS
README.rst
setup.py
sonar-project.properties


Это не программирование на С++, а черти что. Нужно знать кучу каких-то самопальных утилит, которые были применены авторами для каких-то целей.

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

Ну хорошо, я терпеть это не могу, но я знаю про cmake. Программисты любят костыли и придумывают новые для обхода старых.
Скачиваю последнюю версию, скармливаю ей это все, нажимаю Configure... ошибка! В самом синтаксисе cmakefiles.
  вот такая
CMake Error at cmake/Modules/LibtorrentMacros.cmake:75 (_cxx_standard_to_year):
  _cxx_standard_to_year Function invoked with incorrect arguments for
  function named: _cxx_standard_to_year
Call Stack (most recent call first):
  CMakeLists.txt:503 (select_cxx_standard)


CMake Error at cmake/Modules/LibtorrentMacros.cmake:76 (if):
  if given arguments:

    "GREATER_EQUAL" "2011"

  Unknown arguments specified
Call Stack (most recent call first):
  CMakeLists.txt:503 (select_cxx_standard)


Зачем мне с этим разбираться?

Смотрю там есть файл .pro. Вспоминаю что в Студии есть расширение для Qt, открываю через это расширение — открылось! Расширение сгенерировало solution. Пытаюсь пересборать — ошибка. Даже не компиляции, а какая-то мутная ошибка невозможности выполнить Custom Build для файла который нужно обработать программой moc. Опять фигня, не относящаяся к программированию никаким боком.

В итоге я плюну на все это, и как делал уже не раз — заведу пустой проект в Студии, добавлю туда чистые исходники из скачанного проекта и получу нужный результат. Возможно не сразу, но получу. Для простых проектов обычно сразу получается, для больших и сложных — через несколько итераций.
Потому что чистые исходники на С/С++, написанные нормальным образом, как правило компилируются. Иногда приходится подправить какие-то мелочи, добавлять библиотеки которых у меня нет — но по крайней мере это все понятно, компилятор ругнется например на "нет такого-то инклуда" и я полезу его искать, найду и в итоге добавлю новую библиотеку в каталог с библиотеками.

Что я хочу сказать?
А то, что комитет по стандартизации должен принудить всех разработчиков компиляторов к тому, чтобы был один единый для всех компиляторов и для всех операционных систем формат файла проекта, с простым и понятным json- или xml-подобным синтаксисом. Он должен быть единый и достаточный для того, чтобы загрузить проект в любую среду разработки и собрать любым компилятором путем выполнения одной единственной команды. И все вопросы внешних зависимостей должны также решаться компилятором и быть учтены в этом формате.
Re: Мутные файлы для сборки проектов
От: Michael7 Россия  
Дата: 03.03.19 19:28
Оценка:
Здравствуйте, 00011011, Вы писали:

0>Что я хочу сказать?

0>А то, что комитет по стандартизации должен принудить всех разработчиков компиляторов к тому, чтобы был один единый для всех компиляторов и для всех операционных систем формат файла проекта, с простым и понятным json- или xml-подобным синтаксисом.

Было бы хорошо, но это будет не C++.

0> Он должен быть единый и достаточный для того, чтобы загрузить проект в любую среду разработки и собрать любым компилятором путем выполнения одной единственной команды. И все вопросы внешних зависимостей должны также решаться компилятором и быть учтены в этом формате.


Что делать, если для одного проекта используется несколько языков?

Но вообще самого дико раздражает, что куча проектов собирается только в какой-то вымудренной конфигурации на компе авторов и в произвольном случае надо еще пердолиться, настраивая систему под них.
Отредактировано 03.03.2019 19:31 Michael7 . Предыдущая версия .
Re: Мутные файлы для сборки проектов
От: Amygdala Россия  
Дата: 03.03.19 19:31
Оценка: :))
Здравствуйте, 00011011, Вы писали:

Ну а ты как хотел?
Нахаляву и без геморроя? Так не бывает. Привыкай.

Платные проекты, что я покуппал с исходниками, так вот идеально как ты пишешь и выглядят. Нажал на одну кнопкуи все скомпилилось.
Re[2]: Мутные файлы для сборки проектов
От: 00011011  
Дата: 03.03.19 19:33
Оценка:
Здравствуйте, Michael7, Вы писали:

M>Было бы хорошо, но это будет не C++.


Почему? Это вообще не затрагивает сам язык. Это просто обяжет всех разработчиков компиляторов и сред разработки следовать единой объектной модели проекта.
А то ведь кто во что горазд, в той же студии от версии к версии формат меняется!

M>Что делать, если для одного проекта используется несколько языков?


Это как? Результатом является или исполняемый модуль, или библиотека. Если проект использует библиотеку, написанную на другом языке — то значит там внутри должна быть секция "зависимости", в ней "проекты, собираемые другими инструментами" и внутри массив этих внешних проектов (или массив пар ключ-значение: проект — инструмент).
Re: Мутные файлы для сборки проектов
От: Слава  
Дата: 03.03.19 19:34
Оценка:
Здравствуйте, 00011011, Вы писали:

0>А то, что комитет по стандартизации должен принудить всех разработчиков компиляторов к тому


С привлечением Интерпола и прокуратуры. Хорошо бы, но не сработает.
Re[2]: Мутные файлы для сборки проектов
От: Michael7 Россия  
Дата: 03.03.19 19:36
Оценка: 4 (2) +5 :))
Здравствуйте, Amygdala, Вы писали:

A>Платные проекты, что я покуппал с исходниками, так вот идеально как ты пишешь и выглядят. Нажал на одну кнопкуи все скомпилилось.


Бесплатные такие тоже есть. Я видел платные очень энтерпрайзные проекты такие, что это вообще кошмар сборщика. Например, часть файлов надо собрать в одной версии Delphi, часть в другой, потом кое-что из результата пропатчить в 16-ричном редакторе и продолжить сборку в еще одной версии Delphi. И все эти манипуляции толком не описаны, являются чуть ли не сакральным знанием.
Re[3]: Мутные файлы для сборки проектов
От: Michael7 Россия  
Дата: 03.03.19 19:44
Оценка: -1
Здравствуйте, 00011011, Вы писали:

0>Почему? Это вообще не затрагивает сам язык. Это просто обяжет всех разработчиков компиляторов и сред разработки следовать единой объектной модели проекта.


Дело в том, что еще с языка Си нет никакой модели проекта вообще, вернее модель одна, она сводится к компиляции одного большого файла, который получается после всех препроцессоров. Только недавно стали пытаться добавить на уровне языка модули. Линковщик так выходит, что за рамками стандарта (не считая некоторых директив). Это с одной стороны дает очень большую гибкость, с другой приводит к таким вот неприятностям.

M>>Что делать, если для одного проекта используется несколько языков?


0>Это как? Результатом является или исполняемый модуль, или библиотека. Если проект использует библиотеку, написанную на другом языке — то значит там внутри должна быть секция "зависимости", в ней "проекты, собираемые другими инструментами" и внутри массив этих внешних проектов (или массив пар ключ-значение: проект — инструмент).


Просто по определению не выйдет стандартизировать поведение сборщиков других языков. Но на самом деле все еще интереснее. Например, Qt строго формально вообще не на C++ написана. Используются некоторые расширения, которых нет в языке, а компилируется компилятором C++ только после того как специальный препроцессор (qmake) развернет их. И вот как это со стандартом совместить? Не говоря о том, что заставить комитет никого не может, следование стандарту в общем-то добровольное.
Re: Мутные файлы для сборки проектов
От: Ночной Смотрящий Россия  
Дата: 03.03.19 19:46
Оценка: +3 -9 :)
Здравствуйте, 00011011, Вы писали:

0>Это типа крика души Для меня самое сложное в программировании это не собственно программирование, а разобраться с тем, как собрать чужие проекты (как правило open-source) скачанные из инета. Да, я понимаю что у меня наверное совершенно неправильный подход, и наверное никто так не делает.


Да нет, просто у тебя вместо языка здорового человека язык курильщика, велосипедостроение возведенное в сотую степень.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re: Мутные файлы для сборки проектов
От: CreatorCray  
Дата: 03.03.19 19:53
Оценка: +1
Здравствуйте, 00011011, Вы писали:

0>А то, что комитет по стандартизации должен принудить всех разработчиков компиляторов к тому, чтобы был один единый для всех компиляторов и для всех операционных систем формат файла проекта


Увы, нереально.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[2]: Мутные файлы для сборки проектов
От: CreatorCray  
Дата: 03.03.19 19:53
Оценка: +3 :)))
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Да нет, просто у тебя вместо языка здорового человека язык курильщика, велосипедостроение возведенное в сотую степень.

Плохому девелоперу язык мешает?
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[3]: Мутные файлы для сборки проектов
От: Ночной Смотрящий Россия  
Дата: 03.03.19 19:59
Оценка: +2 :))) :)))
Здравствуйте, CreatorCray, Вы писали:

НС>>Да нет, просто у тебя вместо языка здорового человека язык курильщика, велосипедостроение возведенное в сотую степень.

CC>Плохому девелоперу язык мешает?

... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re: Мутные файлы для сборки проектов
От: ononim  
Дата: 03.03.19 20:05
Оценка: +6 -1 :))
0>
  qbittorrent
0>
.appveyor.yml
0>.editorconfig
0>.gitattributes
0>.gitignore
0>.travis.yml
0>5B7CC9A2.asc
0>AUTHORS
0>bootstrap.sh
0>Changelog
0>CMakeLists.txt
0>CODING_GUIDELINES.md
0>codingStyleQtCreator.xml
0>conf.pri.in
0>conf.pri.windows
0>configure
0>configure.ac
0>CONTRIBUTING.md
0>COPYING
0>INSTALL
0>macxconf.pri
0>NEWS
0>qbittorrent.pro
0>README.md
0>TODO
0>uncrustify.cfg
0>unixconf.pri
0>version.pri
0>winconf.pri


Читай README.md, там все написано

0>Или вот.

0>
  libtorrent
0>
0>.doozer.json
0>.gitignore
0>.gitmodules
0>.travis.yml
0>appveyor.yml
0>AUTHORS
0>autotool.sh
0>bootstrap.sh
0>build_dist.sh
0>ChangeLog
0>clang_tidy.jam
0>CMakeLists.txt
0>configure.ac
0>CONTRIBUTING.rst
0>COPYING
0>Jamfile
0>Jamroot.jam
0>libtorrent-rasterbar.pc.in
0>LibtorrentRasterbarConfig.cmake.in
0>LICENSE
0>Makefile.am
0>NEWS
0>README.rst
0>setup.py
0>sonar-project.properties


Читай README.rst, там все написано

0>Для меня самое сложное в программировании это не собственно программирование, а разобраться с тем, как собрать чужие проекты

Да, читать документацию — это сложно.
Как много веселых ребят, и все делают велосипед...
Отредактировано 03.03.2019 20:07 ononim . Предыдущая версия . Еще …
Отредактировано 03.03.2019 20:07 ononim . Предыдущая версия .
Отредактировано 03.03.2019 20:06 ononim . Предыдущая версия .
Re: Мутные файлы для сборки проектов
От: vsb Казахстан  
Дата: 03.03.19 20:05
Оценка:
В современных языках обычно так. В С++ вроде cmake стандарт де-факто, ну autotools это ещё юниксовое наследие. А что, старый добрый ./configure && make не срабатывает?
Re[2]: Мутные файлы для сборки проектов
От: 00011011  
Дата: 03.03.19 20:31
Оценка: :)
Здравствуйте, vsb, Вы писали:

vsb>В современных языках обычно так. В С++ вроде cmake стандарт де-факто, ну autotools это ещё юниксовое наследие. А что, старый добрый ./configure && make не срабатывает?


Мне нужно именно под студию собрать, чтобы поразбираться в коде, в отладчике походить и т.д.
Просто ради сборки я бы и заморачиваться не стал бы, скачал бы готовый бинарник и пользовался бы
Re[3]: Мутные файлы для сборки проектов
От: ononim  
Дата: 03.03.19 20:33
Оценка: +1
M>>Что делать, если для одного проекта используется несколько языков?
0>Это как? Результатом является или исполняемый модуль, или библиотека.
Результатом является приложение, с конфигами, всеми файлами, вощем все что требуется для инсталляции. "исполняемый модуль, или библиотека" это лишь два вырожденных случая.
Как много веселых ребят, и все делают велосипед...
Re[3]: Мутные файлы для сборки проектов
От: vsb Казахстан  
Дата: 03.03.19 20:50
Оценка: +8
Здравствуйте, 00011011, Вы писали:

vsb>>В современных языках обычно так. В С++ вроде cmake стандарт де-факто, ну autotools это ещё юниксовое наследие. А что, старый добрый ./configure && make не срабатывает?


0>Мне нужно именно под студию собрать, чтобы поразбираться в коде, в отладчике походить и т.д.

0>Просто ради сборки я бы и заморачиваться не стал бы, скачал бы готовый бинарник и пользовался бы

Ну это уже вопросы к студии, почему она не поддерживает индустриальный стандарт autotools. Если человек писал проект в линуксе используя vim, как от него можно требовать поддержки студии.

А что, в студии нельзя прицепиться к работающей программе? Т.е. просто создать новый проект, накидать туда все эти файлы исходников, чтобы студия про них знала, собрать бинарник извне с отладочной информацией и подцепиться.
Отредактировано 03.03.2019 20:51 vsb . Предыдущая версия . Еще …
Отредактировано 03.03.2019 20:51 vsb . Предыдущая версия .
Re: Мутные файлы для сборки проектов
От: neFormal Россия  
Дата: 03.03.19 21:09
Оценка: +4
Здравствуйте, 00011011, Вы писали:

0>Это не программирование на С++, а черти что. Нужно знать кучу каких-то самопальных утилит, которые были применены авторами для каких-то целей.


это стандартный софт. и тебе стоило бы о нём знать.

0>А то, что комитет по стандартизации должен принудить всех разработчиков компиляторов к тому, чтобы был один единый для всех компиляторов и для всех операционных систем формат файла проекта, с простым и понятным json- или xml-подобным синтаксисом. Он должен быть единый и достаточный для того, чтобы загрузить проект в любую среду разработки и собрать любым компилятором путем выполнения одной единственной команды. И все вопросы внешних зависимостей должны также решаться компилятором и быть учтены в этом формате.


дык заплати — будет тебе сборщик.
...coding for chaos...
Re: Мутные файлы для сборки проектов
От: Anton Batenev Россия https://github.com/abbat
Дата: 03.03.19 22:49
Оценка: -2 :)
Здравствуйте, 00011011, Вы писали:

0> Это типа крика души Для меня самое сложное в программировании это не собственно программирование, а разобраться с тем, как собрать чужие проекты (как правило open-source) скачанные из инета. Да, я понимаю что у меня наверное совершенно неправильный подход, и наверное никто так не делает.


Да, у тебя неправильный подход — ты "со своим самоваром приехал в Тулу". У всех остальных <данные> проекты собираются стандартными configure && make.
Бэкапимся на Яндекс.Диск
Re: Мутные файлы для сборки проектов
От: Igore Россия  
Дата: 04.03.19 08:27
Оценка: +1
Здравствуйте, 00011011, Вы писали:

0>Зачем мне с этим разбираться?

Чтобы использовать эту библиотеку?

0>Смотрю там есть файл .pro. Вспоминаю что в Студии есть расширение для Qt, открываю через это расширение — открылось! Расширение сгенерировало solution. Пытаюсь пересборать — ошибка. Даже не компиляции, а какая-то мутная ошибка невозможности выполнить Custom Build для файла который нужно обработать программой moc. Опять фигня, не относящаяся к программированию никаким боком.

Согласен, но чтобы использовать Qt проекты нужно хотябы в базе знать как работает Qt сборка

0>В итоге я плюну на все это, и как делал уже не раз — заведу пустой проект в Студии, добавлю туда чистые исходники из скачанного проекта и получу нужный результат. Возможно не сразу, но получу. Для простых проектов обычно сразу получается, для больших и сложных — через несколько итераций.

Qt проект не соберется
0>Потому что чистые исходники на С/С++, написанные нормальным образом, как правило компилируются. Иногда приходится подправить какие-то мелочи, добавлять библиотеки которых у меня нет — но по крайней мере это все понятно, компилятор ругнется например на "нет такого-то инклуда" и я полезу его искать, найду и в итоге добавлю новую библиотеку в каталог с библиотеками.

0>Что я хочу сказать?

0>А то, что комитет по стандартизации должен принудить всех разработчиков компиляторов к тому, чтобы был один единый для всех компиляторов и для всех операционных систем формат файла проекта, с простым и понятным json- или xml-подобным синтаксисом. Он должен быть единый и достаточный для того, чтобы загрузить проект в любую среду разработки и собрать любым компилятором путем выполнения одной единственной команды. И все вопросы внешних зависимостей должны также решаться компилятором и быть учтены в этом формате.
Возможно с появлением модулем мы будем двигаться в этом направлении, да и сейчас уже студия cmake понимает, так же из cmake можно сгенерировать проект для студии, с абсолютными путями, но доработав напильником можно жить.
Re[3]: Мутные файлы для сборки проектов
От: Dair Россия https://dair.spb.ru
Дата: 04.03.19 08:50
Оценка: +5
Здравствуйте, 00011011, Вы писали:

0>Мне нужно именно под студию собрать, чтобы поразбираться в коде, в отладчике походить и т.д.


cmake умеет в качестве выхода выдавать студийный проект.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.