Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 163

Автор ΠœΡΡ‚ΡŒΡŽ НСйл

░ распространСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ

patch
ΠΈ
tar
;

░ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ примСнСния многочислСнных исходных Ρ„Π°ΠΉΠ»ΠΎΠ²

ΠŸΡ€ΠΈ написании ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ программисты послС ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠΈ просто ΠΏΠ΅Ρ€Π΅ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ своС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, компилируя Π·Π°Π½ΠΎΠ²ΠΎ всС Ρ„Π°ΠΉΠ»Ρ‹. Но Π² случаС Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Ρ‚Π°ΠΊΠΎΠΉ простой ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. ВрСмя Ρ†ΠΈΠΊΠ»Π° "Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ β€” компиляция β€” тСстированиС" быстро растСт. Π”Π°ΠΆΠ΅ самому Ρ‚Π΅Ρ€ΠΏΠ΅Π»ΠΈΠ²ΠΎΠΌΡƒ программисту Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ пСрСкомпиляции всСх Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ лишь ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ….Β 

Π“ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Π°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΈ создании многочислСнных Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΈΡ… Π² Ρ€Π°Π·Π½Ρ‹Π΅ исходныС Ρ„Π°ΠΉΠ»Ρ‹. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ a.h, b.h ΠΈ c.h ΠΈ исходныС Ρ„Π°ΠΉΠ»Ρ‹ Π½Π° языкС Π‘ main.c, 2.с ΠΈ 3.c (ΠΌΡ‹ надССмся, Ρ‡Ρ‚ΠΎ Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Π²Ρ‹ Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚Π΅ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄Π°Ρ‡Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ здСсь). Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ситуациСй.

/* main.c */

#include "a.h"

...

/* 2.с */

#include "a.h"

#include "b.h"

...

/* 3.c */

#include "b.h"

#include "c.h"

...

Если программист измСняСт Ρ„Π°ΠΉΠ» c.h, Ρ„Π°ΠΉΠ»Ρ‹ main.c ΠΈ 2.с Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π½Π΅ зависят ΠΎΡ‚ этого Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Π€Π°ΠΉΠ» 3.с зависит ΠΎΡ‚ c.h ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ Π·Π°Π½ΠΎΠ²ΠΎ, Ссли измСнился c.h. Но Ссли Π±Ρ‹Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Ρ„Π°ΠΉΠ» b.h, ΠΈ программист Π·Π°Π±Ρ‹Π» ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π½ΠΎΠ²ΠΎ Ρ„Π°ΠΉΠ» 2.с, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ.

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π°

make
ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΎΠ±Π΅ эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, обСспСчивая Π² случаС нСобходимости ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ всСх Ρ„Π°ΠΉΠ»ΠΎΠ², Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹Ρ… измСнСниями.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Команда

make
примСняСтся Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π•Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². Π•Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎ Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (Ρ‚Π°ΠΊΡƒΡŽ ΠΆΠ΅, ΠΊΠ°ΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ troff ΠΈΠ»ΠΈ Π’Π΅Π₯).

Команда make ΠΈ make-Ρ„Π°ΠΉΠ»Ρ‹

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

make
ΠΌΠ½ΠΎΠ³ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… свСдСний ΠΈ Π·Π½Π°Π½ΠΈΠΉ, ΠΎΠ½Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°Ρ‚ΡŒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сообщит Π΅ΠΉ, ΠΊΠ°ΠΊ устроСно ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» называСтся make-Ρ„Π°ΠΉΠ»ΠΎΠΌ ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠΌ сборки.

Make-Ρ„Π°ΠΉΠ» Ρ‡Π°Ρ‰Π΅ всСго располоТСн Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Ρ‡Ρ‚ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ исходныС Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’ любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ мноТСство make-Ρ„Π°ΠΉΠ»ΠΎΠ². Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ссли Ρƒ вас большой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ make-Ρ„Π°ΠΉΠ»Ρ‹ для Ρ€Π°Π·Π½Ρ‹Ρ… частСй ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π‘ΠΎΡ‡Π΅Ρ‚Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

make
ΠΈ make-Ρ„Π°ΠΉΠ»Π° β€” ΠΌΠΎΡ‰Π½ΠΎΠ΅ срСдство управлСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ. Оно часто примСняСтся Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для управлСния компиляциСй исходного ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π½ΠΎ ΠΈ для ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ справочного руководства ΠΈΠ»ΠΈ установки прилоТСния Π² Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³.

Бинтаксис make-Ρ„Π°ΠΉΠ»ΠΎΠ²

Make-Ρ„Π°ΠΉΠ» состоит ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° зависимостСй ΠΈ ΠΏΡ€Π°Π²ΠΈΠ». Π£ зависимости Π΅ΡΡ‚ΡŒ Ρ†Π΅Π»ΡŒ ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π½ΠΈΠ΅ (Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ) ΠΈ Π½Π°Π±ΠΎΡ€ исходных Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½Π° зависит. ΠŸΡ€Π°Π²ΠΈΠ»Π° ΠΈΠ»ΠΈ инструкции ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ» ΠΈΠ· зависимых Ρ„Π°ΠΉΠ»ΠΎΠ². ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ†Π΅Π»ΡŒ β€” это Π΅Π΄ΠΈΠ½Ρ‹ΠΉ исполняСмый Ρ„Π°ΠΉΠ».

Make-Ρ„Π°ΠΉΠ» читаСтся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ

make
, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅ΠΉ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ сформированы, ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ Π΄Π°Ρ‚Ρ‹ ΠΈ врСмя исходных Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ инструкции Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ для формирования Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Часто слСдуСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ задания, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сформирована Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ†Π΅Π»ΡŒ. Команда
make
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ make-Ρ„Π°ΠΉΠ» для опрСдСлСния порядка, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ задания, ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ запуска ΠΏΡ€Π°Π²ΠΈΠ».

ΠžΠΏΡ†ΠΈΠΈ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ make

Π£ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

make
Π΅ΡΡ‚ΡŒ нСсколько ΠΎΠΏΡ†ΠΈΠΉ. НаиболСС часто ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

β–‘Β 

-k
, ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‰Π°Ρ
make
ΠΎ нСобходимости ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Ссли ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° ошибка, Π° Π½Π΅ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ появлСнии ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π­Ρ‚Ρƒ ΠΎΠΏΡ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для выявлСния Π·Π° ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ всСх исходных Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹;

β–‘Β 

-n
, ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‰Π°Ρ
make
ΠΎ нСобходимости Π²Ρ‹Π²ΠΎΠ΄Π° пСрСчня Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Ρ… дСйствий Π±Π΅Π· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΡ… выполнСния;

β–‘Β 

-f &lt;<i>Ρ„Π°ΠΉΠ»</i>&gt;
, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ
make
ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΊ make-Ρ„Π°ΠΉΠ». Если Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ эту ΠΎΠΏΡ†ΠΈΡŽ, стандартная вСрсия ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
make
ΠΈΡ‰Π΅Ρ‚ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΉ makefile. Если Π΅Π³ΠΎ Π½Π΅Ρ‚, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΡ‰Π΅Ρ‚ Ρ„Π°ΠΉΠ», Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΉ Makefile. Но Ссли Π²Ρ‹ примСняСтС GNU Make, Ρ‡Ρ‚ΠΎ вСроятно Π² ОБ Linux, эта вСрсия ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ make сначала ΠΈΡ‰Π΅Ρ‚ Ρ„Π°ΠΉΠ» GNUmakefile Π΄ΠΎ поиска Ρ„Π°ΠΉΠ»Π° makefile ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ поиска Makefile. Π’ соотвСтствии с соглашСниСм программисты Linux ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ имя Makefile, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ позволяСт ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» сборки ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π² спискС Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ², состоящими ΠΈΠ· строчных Π±ΡƒΠΊΠ². ΠœΡ‹ ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ имя GNUmakefile, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΎ спСцифично для. Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ GNU ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
make
.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

make
Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ исполняСмый Ρ„Π°ΠΉΠ», Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ
make
имя задания ΠΈΠ»ΠΈ Ρ†Π΅Π»ΠΈ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. Если этого Π½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°
make
попытаСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π² make-Ρ„Π°ΠΉΠ»Π΅. МногиС программисты ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π² своих make-Ρ„Π°ΠΉΠ»Π°Ρ… Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ†Π΅Π»ΠΈ ΠΈΠ»ΠΈ задания
all
ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ задания, ΠΊΠ°ΠΊ зависимости для
all
. Π­Ρ‚ΠΎ соглашСниС Π΄Π΅Π»Π°Π΅Ρ‚ понятным Π²Ρ‹Π±ΠΎΡ€ задания ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ссли Π½Π΅ Π·Π°Π΄Π°Π½Π° конкрСтная Ρ†Π΅Π»ΡŒ. ΠœΡ‹ ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ этого соглашСния.

Зависимости

Зависимости ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚, ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π² ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ связан исходными Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Ρ€Π°Π½Π΅Π΅ Π² этой Π³Π»Π°Π²Π΅, Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ зависимости, говорящиС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ (ΠΎΠ½ΠΎ зависит ΠΎΡ‚) main.ΠΎ, 2.ΠΎ ΠΈ 3.o; ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ для main.ΠΎ (main.c ΠΈ a.h); 2.o (2.с, a.h ΠΈ b.h) ΠΈ 3.o (3.c, b.h ΠΈ c.h). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π° Ρ„Π°ΠΉΠ» main.ΠΎ Π²Π»ΠΈΡΡŽΡ‚ измСнСния Ρ„Π°ΠΉΠ»ΠΎΠ² main.c ΠΈ a.h, ΠΈ ΠΎΠ½ нуТдаСтся Π² пСрСсоздании с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΉ компиляции Ρ„Π°ΠΉΠ»Π° main.c, Ссли Π±Ρ‹Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ любой ΠΈΠ· Π΄Π²ΡƒΡ… ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ².

Π’ make-Ρ„Π°ΠΉΠ» Π²Ρ‹ записываСтС эти ΠΏΡ€Π°Π²ΠΈΠ»Π°, указывая имя задания, Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅, ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈΠ»ΠΈ табуляции ΠΈ Π·Π°Ρ‚Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ ΠΈΠ»ΠΈ табуляциями ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ², примСняСмых для создания Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° задания. Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ список зависимостСй для Ρ€Π°Π½Π΅Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°: