Line | |
---|
1 | :PROPERTIES:
|
---|
2 | :ID: fe849377-d338-4347-b34f-3fa9a70c3e35
|
---|
3 | :END:
|
---|
4 | #+title: Make
|
---|
5 | Система сборки, используемая в проекте гну для языка си и си-подобных.
|
---|
6 | - Собирает программу при помощи например GCC
|
---|
7 | - Установка зависимостей
|
---|
8 | - Запоминание установок сборки
|
---|
9 | - Не будет собирать уже собранное
|
---|
10 |
|
---|
11 | *Нотация*:
|
---|
12 | #+begin_src makefile
|
---|
13 | target [target ...]: [component ...]
|
---|
14 | [command 1] # ^ компоненты = зависимости
|
---|
15 | .
|
---|
16 | .
|
---|
17 | .
|
---|
18 | [command 2]
|
---|
19 | #+end_src
|
---|
20 |
|
---|
21 | *Зависимости*:
|
---|
22 | #+begin_src makefile
|
---|
23 | all: program1
|
---|
24 | # ^ если запущен просто make, то запускает программы из all
|
---|
25 | # v зависимости v
|
---|
26 | program1: objectFile.o obj2.o
|
---|
27 | gcc *.o -o program1 # Linking only
|
---|
28 |
|
---|
29 | objectFile.o: objectFile.c
|
---|
30 | gcc -c objectFile.c -o objectFile.c # Compile only
|
---|
31 |
|
---|
32 | obj2.o: obj2.c
|
---|
33 | gcc -c obj2.c -o obj2.c # Compile only
|
---|
34 |
|
---|
35 | hello: ; @echo "Hello# "
|
---|
36 | #+end_src
|
---|
37 |
|
---|
38 | *Особые команды*:
|
---|
39 | /(-)/ Игнорировать ошибки
|
---|
40 | /(@)/ Не выводить в стандартный порт вывода
|
---|
41 | /(+)/ Выполнить даже если make не в режиме выполнения
|
---|
42 |
|
---|
43 | *Макросы/переменные*
|
---|
44 | #+begin_src makefile
|
---|
45 | MACRO1 = 42
|
---|
46 |
|
---|
47 | COMPILE = gcc *.c
|
---|
48 |
|
---|
49 | gcc:
|
---|
50 | $(COMPILE)
|
---|
51 | #+end_src
|
---|
52 |
|
---|
53 |
|
---|
54 |
|
---|
55 | https://gnu.org/software/make/
|
---|
Note:
See
TracBrowser
for help on using the repository browser.