|
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
|
|
Структура приложения02.08.2015, 19:30. Показов 1513. Ответов 2
Меня уже давно интересует как правильно организовать структуру приложения(набор каталогов, файлов etc). Куда класть сторонние библиотеки и в какой форме? Если исходники, то это надо файлы лицензий, документацию, писать какие-то скрипты для сборки. Или просто оставлять список зависимостей, которые надо скачать/собрать/установить? Но ведь это выглядит не очень удобно. Может есть какие-то методы работы с 3rd party проектами?
P.S. Использую систему сборки cmake.
0
|
|
| 02.08.2015, 19:30 | |
|
Ответы с готовыми решениями:
2
Структура приложения Структура приложения Структура приложения |
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||||||||||
| 27.08.2015, 10:41 | |||||||||||||||||
Сообщение было отмечено dailydose как решение
Решениекоторая ориентированна на поддержку крупных и малых проектов, в условиях независимости от целевых IDE. сегодня базируется на "умных" сценариях сборки под управлением cmake. есть иерархия каталогов:
которые нужно собирать из исходников. такие, как например boost, gmock, tools, etc все они организуются по единой схеме: при необходимости скрипты сборки и исходный код пропатчивается, затем жмутся архиватором 7z. есть скрипты, которые имеют одинаковые имена: виндовсы: make.bat линуксы: make.sh цель простая: сотрудник компании не должен мудохаться со сборкой. для разворота какого нибудь boost необходимо зайти в его каталог, и запустить батник. собранный буст попадает в каталог external. выглядит это примерно так:
в зависимости от конфигурации сборки, умный сценарий самостоятельно опредилит, куда именно можно заходить, а куда нельзя. и сможет найти библиотеку. рассмотрим каталог чуть поближе:
и иметь самое разнообразное строение. однако, в именах каталогов или файлов так же могут содержаться тэги конфигурации. в данном случае по циферкам 32/64 умный сценарий сможет различать адрессную модель (32 или 64 битная сборка) а по таким тэгам, как debug, или -d может отличить дебажную либу от релизной. в специальном конфигурационном файле, который содержится в каталоге service, пользователи могут самостоятельно назначать произвольные тэги. обыкновенно, в каталоге projects содержится CMakeLists.txt это - умный сценарий. он один единственный на все рабочее пространство. не нужно знать что внутри него, и вообще для работы знания cmake не понадобится. это сделанно специально, что бы программисты не тратили время на рутину: на настройку вручную каждый раз очередную цель. для того, что бы создать новую цель проекта, ну например библиотеку, достаточно просто в каталоге projects создать подкаталог этой библиотеки, и уже можно накидывать туда файлы исходного кода. цель, и список исходников, из которых она состоит будет обнаружено автоматически. так же, в каталоге содержатся батники, задача которых - запустить cmake. (мне лень в командной строке вводить команду запуска. я работаю из Far, или mc, и запускаю сборку одним нажатием на enter по батничку) батник содержит три возможные настроки: генерация файлов проекта целевой ИДЕ, и остановка генерация файлов проекта целевой ИДЕ, и запуск этой ИДЕ генерация файлов проекта целевой ИДЕ, и запуск сборки очень удобно. при запуске, умный сценарий автоматически находит все цели проекта. определяет состав целей (списких исходных файлов указывать в ручную не нужно) определяет все из зависимости и подключает внешние библиотеки. (можно вручную перечислить имена внешних зависимостей. сами зависимости будут обнаружены и подключены автоматически. можно ничего не указывать и полностью предоставить все автоматике, но к сожалению это не во всех случаях срабатывает) находит цели-демонстрации, если они есть. находит цели-юнит-тесты, если они есть. и подключает к ним все необходимое. если есть зависимости от динамических либ - копирует их к бинарнику если есть ресурсы (картинки, конфиги) - копирует их к бинарнику. короче - полное обслуживание. и на выхлопе формируется список всех обнаруженных целей. в этом же файлике пользователь может указать, какие цели он хочет собирать, а какие ему не нужны. при этом, если указанная пользователем цель зависит от другой цели (которую он не указал), она все равно принудительно будет включена в сборку, если отсутствует уже построенная либа. это нужно, что бы все зависимости были удовлетворенны. резюмируя: придерживаясь нескольких весьма простых правил, на cmake не сложно автоматизировать всю рутину. и забыть о том, как неудобно, долго и нудно приходится каждый раз вручную настраивать каждую цель проекта.
2
|
|||||||||||||||||
|
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
|
|
| 27.08.2015, 11:10 [ТС] | |
|
Спасибо за схему каталогов, я как-то даже не подумал о такой форме. Получается, что вы смешиваете скрипты(sh, bat) + систему cmake? Можно подробнее о умных сценариях?
0
|
|
| 27.08.2015, 11:10 | |
|
Помогаю со студенческими работами здесь
3
Структура приложения ООП
Структура приложения в Android Studio
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Решение ниже на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2.
Задача: реализовать. . .
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|