0

У меня есть проект C с пользовательским Makefile. Его первая строка - это путь к каталогу проекта. Поэтому каждая машина, работающая с этим проектом, должна изменить этот путь к своему рабочему каталогу, и, естественно, это приводит к новому нежелательному фиксации, особенно если вы выталкиваете данные. Кроме того, есть несколько внешних SDK, которые также требуют путей.Makefile с абсолютными путями и Git

Каковы ваши решения?

+1

Почему бы не изменить свой Makefile для использования относительного пути, чтобы избежать изменения в соответствии с рабочим каталогом? – gzh

+0

@gzh они относительны внутри рабочего реж. Также я только что нашел, что make имеет команду «§ (CURDIR)». Но как насчет внешнего sdk, который должен быть подключен к проекту? –

+1

вы можете использовать [git subodule] (https://git-scm.com/docs/git-submodule) или [git-repo] (https://code.google.com/p/git-repo/) для управлять исходным кодом и внешним SDK в другом репозитории и проверять их с указанным вами макетом каталога. – gzh

ответ

3

Условно включает в себя незафиксированный файл makefile, который устанавливает локальные пути (например, -include config.mak).

0

Прежде всего, вы можете переопределить переменную, которая назначается с помощью простого = с помощью командной строки:

$ cat Makefile 
AAA = 1 
all: 
    echo $(AAA) 
$ make 
1 
$ make AAA=2 
2 

Во-вторых, вы можете использовать ?= и в этом случае среда Linux также переопределить переменную Makefile ':

$ cat Makefile 
AAA ?= 1 
all: 
    echo $(AAA) 
$ export AAA=3 
$ make 
3 

Затем вы можете добавить переменную в ваш .bashrc и забыть об этом.