|
|
# Структура хранения кода (source tree)
|
|
|
Хранение исходников организовано по следующему принципу: (на примере программы Name)
|
|
|
- Name
|
|
|
- include (заголовочные файлы)
|
|
|
- include *(заголовочные файлы)*
|
|
|
- class.h
|
|
|
- src (файлы исходного кода)
|
|
|
- src *(файлы исходного кода)*
|
|
|
- main.cpp
|
|
|
- class.cpp
|
|
|
- Makefile (правила компиляции)
|
|
|
- name.conf (конфигурационный файл) |
|
|
- ui *(макеты графического интерфейса)*
|
|
|
- window.glade
|
|
|
- obj *(бинарные файлы, создается вручную перед компиляцией)*
|
|
|
- Makefile *(правила компиляции)*
|
|
|
- name.conf *(конфигурационный файл)*
|
|
|
|
|
|
# Компиляция с помощью Makefile
|
|
|
|
|
|
> Перед компиляцией нужно вручную создавать директорию obj.
|
|
|
|
|
|
Для компиляции программы используется Makefile, лежащий в ее директории. Вот [пример](https://git.miem.hse.ru/19102/telecenter/-/blob/master/Grid/Makefile) для Grid.
|
|
|
|
|
|
Новый можно создавать по этому же шаблону, меняя параметры до черты:
|
|
|
```make
|
|
|
# Название исполняемого файла
|
|
|
TARGET = grid
|
|
|
# Директории, где лежат файлы
|
|
|
DIRS = . ../core
|
|
|
# Названия поддиректорий для исходного кода / заголовочных файлов / бинарнах файлов
|
|
|
SOURCEDIR = src
|
|
|
INCLUDEDIR = include
|
|
|
BUILDDIR = obj
|
|
|
|
|
|
# ------------------------------------------------------------------
|
|
|
|
|
|
```
|
|
|
|
|
|
При создании новой программы с Makefile, нужно изменить Makefile в корневом каталоге репозитория, [вот он](https://git.miem.hse.ru/19102/telecenter/-/blob/master/Makefile).
|
|
|
Этот файл нужен, чтобы можно было скомпилировать программы из корневого каталога:
|
|
|
- сразу все `make all`
|
|
|
- какую-то конкретную `make recorder`
|
|
|
|
|
|
Для этого нужно
|
|
|
1. добавить название исполняемого файла в строки `.PHONY` и `all`
|
|
|
2. добавить вызов другого Makefile:
|
|
|
```make
|
|
|
name:
|
|
|
$(MAKE) -C Name
|
|
|
|
|
|
```
|
|
|
3. добавить правило для удаления бинарников:
|
|
|
|
|
|
```make
|
|
|
clean:
|
|
|
$(MAKE) -C Name clean
|
|
|
``` |