Команда make.
Предположим нам нужно сделать исполняемый файл programma из исходниых файлов main.cpp function.cpp и заголовочного function.h. Создадим файл makefile в той же директории где находяться выше перечисленные файлы.
vitaliy@fox:~/$ nano makefile
programma : main.o function.o
g++ -o programma main.o function.o
main.o : main.cpp function.h
g++ -c main.cpp
function.o : function.cpp function.h
g++ -c function.cpp
clean :
rm programma main.o function.o
makefile состоит из четырех частей каждая из честей строиться по следующему принципу:
цель : предпосылка
команда
цель - это обычно файл который генерирует программа make.
предпосылка- это файл который используеться как вход для создания цели от этих файлов
зависит цель.
зависит цель.
команда- это действие которое выполняет make.
Предпосылок может быть несколько.
Предпосылок может быть несколько.
В примере выше clean необходим в будущем для удаление программы, а именно файлов programma main.o function.o.
Теперь для создания исполняемого файла выполним команду make:
vitaliy@fox:~/$ make
g++ -c main.cpp
g++ -c function.cpp
g++ -o programma main.o function.o
Для удаления данных выполнить make clean:
vitaliy@fox:~/$ make clean
rm programma main.o function.o
!!! Очень полезная функция программы make, заключаеться в том что она может обнавлять файлы. В случае если один из файлов-предпосылок был изменен программа make выполнинт команду для всех целей где указан этот файл-предпосылка. К примеру вы изменили что-то в исходном файле function.cpp, теперь еслы вы выполните повторно команду make она проверит время редактирования всех файлов-предпосылок и сравнит со значениями в своей базе с момента последнего выполнения команды make. В тех случаях где файйл-предпосылка изменен make повторно выполнит соответствущие команды. В нашем случае make выполнит команду
g++ -c function.cp
Если бы был изменен файл function.h ,были бы выполнины команды во всех секциях где есть этот файл, а именно:
g++ -c main.cpp
g++ -c function.cpp
Можно также расширить возможность установки добавив цели install и uninstall :
Если бы был изменен файл function.h ,были бы выполнины команды во всех секциях где есть этот файл, а именно:
g++ -c main.cpp
g++ -c function.cpp
Можно также расширить возможность установки добавив цели install и uninstall :
vitaliy@fox:~/$ nano makefile
programma : main.o function.o
g++ -o programma main.o function.o
main.o : main.cpp function.h
g++ -c main.cpp
function.o : function.cpp function.h
g++ -c function.cpp
clean :
rm programma main.o function.o
install :
cp programma /usr/sbin/programma
uninstall :
rm -f /usr/sbin/programma
Теперь после того как Вы выполнили команду make, выполните из под рута команду make install для установки(копирования) исполняемого файла в директорию /usr/sbin/
root@fox:/home/vitaliy# make install
Для удаления исполняемого файла из дериктории /usr/sbin/
root@fox:/home/vitaliy# make uninstall
root@fox:/home/vitaliy# make install
Для удаления исполняемого файла из дериктории /usr/sbin/
root@fox:/home/vitaliy# make uninstall