|
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
|
|
Структура приложения02.08.2015, 19:30. Показов 1484. Ответов 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
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|