0

J'ai un projet C avec Makefile personnalisé. Sa première ligne est le chemin vers le répertoire du projet. Donc, chaque machine, qui fonctionne avec ce projet, doit changer ce chemin vers son répertoire de travail, et naturellement cela conduit à de nouveaux commit indésirable, surtout si vous poussez des données. De plus, il existe plusieurs SDK externes qui nécessitent également des chemins.Makefile avec des chemins absolus et Git

Quelles sont vos solutions?

+1

Pourquoi ne pas modifier votre Makefile pour utiliser un chemin relatif pour éviter de changer selon le répertoire de travail? – gzh

+0

@gzh ils sont relatifs à l'intérieur du répertoire de travail. Aussi je viens de trouver que make a la commande '§ (CURDIR)'. Mais qu'en est-il de sdk externe qui doit être connecté au projet? –

+1

vous pouvez utiliser [git submodule] (https://git-scm.com/docs/git-submodule) ou [git-repo] (https://code.google.com/p/git-repo/) pour gérer votre code source et votre SDK externe dans un référentiel différent et les extraire avec la mise en page de répertoire que vous avez spécifiée. – gzh

Répondre

3

Conditionnellement inclure un makefile non tracé qui définit les chemins locaux (par exemple -include config.mak).

0

d'abord, vous pouvez remplacer la variable qui est affectée par simple, = via la ligne de commande:

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

Deuxièmement, vous pouvez utiliser ?= et dans ce cas, l'environnement Linux remplacera également la variable Makefile:

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

Ensuite, vous pouvez ajouter une variable à votre .bashrc et l'oublier.