Вы можете использовать переменные окружения, такие как ${HOME}
, для замены /home/name
и всего, что связано с окружением.
Что касается остальной части полностью записанного пути, то люди, использующие тот же Makefile, будут иметьиметь схожую архитектуру, или вам придется передавать параметры в ваши правила.
Например, вы можете выполнить make ARGS="path" all
, где путь - это пользовательский путь, а затем использовать ${ARGS}
, который будет эквивалентенpath
в вашем all:
правиле в Makefile.
Но, как сказал tripleee , лучше всего использовать относительные пути.
В этом случаеMakefile может быть загружен в корневой каталог проекта, а исходные файлы созданы в каталоге src
, например:
.
├── Makefile
└── src
├── file1.c
└── file2.c
A (очень простой) Makefile для компиляции всех файлов .c
в src
с использованием относительных путей будет:
CC=gcc
SRC=./src/*.c
all:
${CC} ${SRC}