Вопрос про функционал mql5 IDE и возможность объединения программы разбитой на mqh в один файл

 

Это наверное больше касается фрилансеров и необходимости отправки исходного когда заказчику.

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

Разбиваем на инклуды, у меня это выглядит примерно так(см. вложение jpg)

Далее, отправить exe не проблема, но отправлять заказчику exe без исходного = хамство и наглость.

Чтобы отправить исходный, нужно пройтись по всем инклудам, ctrl+shift+end  ctrl+C  ctrl+V.

Не очень удобно и быстро, рутинно.

Вопрос, может я не знаю, есть ли некий функционал в компиляторе, позволяющий автоматически сформировать из всех инклудов один единый с открытым кодом файл?

Файлы:
 

Понятно что не сложно сделать самопальный компилятор множества mqh в один исходный код, но мне интересно как живут, сколько уже, сотня может фрилансеров есть?, Каждый сам себе написал компилятор, или пишут любого объема код в одном файле, или в ручную объединяют в один файл, или я индеец не знаю о наличии секретной кнопки mql5 IDE, которая делает это автоматически?

Файлы:
 
Lazar Buga #:

Понятно что не сложно сделать самопальный компилятор множества mqh в один исходный код, но мне интересно как живут, сколько уже, сотня может фрилансеров есть?, Каждый сам себе написал компилятор, или пишут любого объема код в одном файле, или в ручную объединяют в один файл, или я индеец не знаю о наличии секретной кнопки mql5 IDE, которая делает это автоматически?

Да, есть такое - https://www.mql5.com/en/code/27955

MQL5 Program Packer
MQL5 Program Packer
  • www.mql5.com
This is MQL5 project packer: assemble all source and resource files from dependencies into a single ZIP.
 
Используйте штатные проекты - они позволяют удобно работать с деревом связанных исходных файлов, ресурсов и настроек.
 
Renat Fatkhullin #:
Используйте штатные проекты - они позволяют удобно работать с деревом связанных исходных файлов, ресурсов и настроек.
А как проект решает проблему топикстартера?
 
Не могу понять зачем весь проект обьединять в один файл??? Почему нельзя отправить проект с отдельными исходными файлами? Чем отправка exe отличается от отправки одного огромного говнофайла с исходным кодом?
 
DrSky #:
Чем отправка exe отличается от отправки одного огромного говнофайла с исходным кодом?

Наверное тем, что в исполняемый файл нельзя внести корректировки. 
 
Sergey Gridnev #:
А как проект решает проблему топикстартера?

Как правильный вариант, передать и обновлять shared проект прямо в редакторе, добавив получателя с правами на чтение в совместном проекте.

Ну и по максимуму собирать исходники в локальном каталоге.

 
DrSky #:
Не могу понять зачем весь проект обьединять в один файл??? Почему нельзя отправить проект с отдельными исходными файлами? Чем отправка exe отличается от отправки одного огромного говнофайла с исходным кодом?

Странный вопрос. Обычно удобно отправить архив исходников - один файл. Вы ручками все зависимости собираете? И исполняемый файл (exe, он же ex5) - это же не исходник.

И да, текущие проекты проблемы не решают.

 
Stanislav Korotky #:

Странный вопрос. Обычно удобно отправить архив исходников - один файл. Вы ручками все зависимости собираете? И исполняемый файл (exe, он же ex5) - это же не исходник.

И да, текущие проекты проблемы не решают.

Согласен. Странно что нет штатного решения получения кода с инклудами в одном файле.

ЗЫ и конечно нужны настройки что вносить, что не вносить в код. Все библы которые есть в поставке терминала внести иногда конечно это слишком.

 
Stanislav Korotky #:

Странный вопрос. Обычно удобно отправить архив исходников - один файл. Вы ручками все зависимости собираете? И исполняемый файл (exe, он же ex5) - это же не исходник.

И да, текущие проекты проблемы не решают.

Обычно, в архив пакуют папку с проектом и папку Include с собственными файлами. В чем собственно проблема? Почему нельзя сделать скрипт:

cp -r <mql5_dir>/Experts/SuperPuperTrader <tmp_dir>/Experts/SuperPuperTrader

cp -r <mql5_dir>/Includes/my_includes <tmp_dir>/Includes/my_includes

А после этого, запаковать эту папку? Так делают абсолютно все, я ни разу не видел ни тут, в разделе статей, ни где бы то либо еще подобного веселого говнорешения со сбором всего проекта в одном файле, который потом невозможно разобрать. То есть, вы специально делаете лютый геморой заказчику, что бы следующий кодер который будет разбирать обратно по файлам вашего бота, назвал вас никчемным?