Применение команды make к файлам системы контроля исходного кода

Команды и файлы SCCS применяются для управления доступом к файлу и отслеживания изменений, внесенных в файл.

Файл SCCS - это любой текстовый файл, который применяется командами SCCS. При обработке файлов SCCS командами, отличными от SCCS, эти файлы могут быть повреждены.

У всех файлов SCCS есть префикс s., отличающий их от обычных текстовых файлов. Команда make не распознает ссылки на префиксы имен файлов. Из-за этого в файле описания команды make нельзя ссылаться на файлы SCCS напрямую. Для представления файлов SCCS команда make использует расширение ~ (тильду). Следовательно, .c~.o - это имя правила, которое преобразует файл SCCS, содержащий исходный код на языке C, в объектный файл. Ниже приведено внутреннее представление этого правила:

.c~.o:
         $(GET) $(GFLAGS) -p  $<  >$*.c
         $(CC) $(CFLAGS) -c $*.c
         -rm -f $*.c

Добавление символа ~ (тильды) к расширению имени файла приводит к тому, что вместо обычного файла будет найден файл SCCS с фактическим расширением (включающим все символы, стоящие между точкой (.) и тильдой). С помощью макроопределения GFLAGS в SCCS передаются флаги, задающие версию файла SCCS.

Команда make распознает следующие расширения имен SCCS:

Суффикс Описание
.C\~ Исходный файл C++
.c~ Исходный файл c
.y~ Исходная грамматика yacc
.s~ Исходный файл ассемблера
.sh~ Файл команд оболочки
.h~ Заголовочный файл
.f~ Файл на Фортране
.l~ Исходная грамматика lex

В команде make применяются следующие правила преобразования файлов SCCS:

.C\~.a:
.C\~.c:
.C\~.o:
.c~:
.c~.a:
.c~.c:
.c~.o:
.f~:
.f~.a:
.f~.o:
.f~.f:
.h~.h:
.l~.o:
.s~.a:
.sh~:
.s~.o:
.y~.c:
.y~.o: