Articles of makefile

Comment obtenez-vous la liste des cibles dans un makefile?

J’ai utilisé un peu rake (un programme make Ruby), et il a une option pour obtenir une liste de toutes les cibles disponibles, par exemple > rake –tasks rake db:charset # resortingeve the charset for your data… rake db:collation # resortingeve the collation for your da… rake db:create # Creates the databases defined in y… […]

Que font @, – et + comme préfixes pour les lignes de recette dans Make?

Dans le manuel GNU Makefile, il mentionne ces préfixes. Si .ONESHELL est fourni, seule la première ligne de la recette sera vérifiée pour les caractères de préfixe spéciaux (‘@’, ‘-‘ et ‘+’). Que font ces préfixes et où sont-ils mentionnés?

Comment «make» app sait-elle la cible par défaut à construire si aucune cible n’est spécifiée?

La plupart des applications Linux sont compilées avec: make make install clean Comme je l’ai compris, make prend les noms des cibles de construction comme arguments. Donc, install est une cible qui copie certains fichiers et après cela, clean est une cible qui supprime les fichiers temporaires. Mais quelle cible va créer si aucun argument […]

Pourquoi personne n’utilise make for Java?

À peu près tous les projets Java que j’ai vus utilisent Maven ou Ant. Ce sont de bons outils et je pense que presque tous les projets peuvent les utiliser. Mais qu’est-il arrivé à faire ? Il est utilisé pour une variété de projets non-Java et peut facilement gérer Java. Bien sûr, vous devez télécharger […]

Comment obtenir le répertoire relatif actuel de votre Makefile?

J’ai plusieurs Makefiles dans des répertoires spécifiques à l’application, comme ceci: /project1/apps/app_typeA/Makefile /project1/apps/app_typeB/Makefile /project1/apps/app_typeC/Makefile Chaque Makefile inclut un fichier .inc dans ce chemin d’un niveau supérieur: /project1/apps/app_rules.inc Inside app_rules.inc Je suis en train de définir la destination de l’endroit où je veux placer les binarys lors de leur construction. Je veux que tous les fichiers […]

Comment assigner la sortie d’une commande à une variable Makefile

J’ai besoin d’exécuter certaines règles de make sous condition que le Python installé soit supérieur à une certaine version (disons 2.5). Je pensais pouvoir faire quelque chose comme exécuter: python -c ‘import sys; print int(sys.version_info >= (2,5))’ puis en utilisant la sortie (‘1’ si ok, ‘0’ sinon) dans une ifeq . Dans un script shell […]

Pourquoi pense-t-on que la cible est à jour?

Ceci est mon Makefile: REBAR=./rebar REBAR_COMPILE=$(REBAR) get-deps comstack all: comstack comstack: $(REBAR_COMPILE) test: $(REBAR_COMPILE) skip_deps=true eunit clean: -rm -rf deps ebin priv doc/* docs: $(REBAR_COMPILE) doc ifeq ($(wildcard dialyzer/sqlite3.plt),) static: $(REBAR_COMPILE) build_plt analyze else static: $(REBAR_COMPILE) analyze endif Je peux exécuter make comstack plusieurs fois et obtenir aromanov@alexey-desktop:~/workspace/gm-controller/lib/erlang-sqlite$ make comstack ./rebar get-deps comstack ==> erlang-sqlite […]

Définir la variable make au moment de l’exécution de la règle

Dans mon GNUmakefile, j’aimerais avoir une règle qui utilise un répertoire temporaire. Par exemple: out.tar: TMP := $(shell mktemp -d) echo hi $(TMP)/hi.txt tar -C $(TMP) cf $@ . rm -rf $(TMP) Comme écrit, la règle ci-dessus crée le répertoire temporaire au moment où la règle est analysée . Cela signifie que, même si je […]

Comstackr avec g ++ en utilisant plusieurs cœurs

Question rapide: quel est l’indicateur du compilateur permettant à g ++ de générer plusieurs instances de lui-même afin de comstackr plus rapidement des projets volumineux (par exemple 4 fichiers source à la fois pour un processeur multi-core)? Merci beaucoup.

Comment puis-je configurer mon makefile pour les versions de débogage et de publication?

J’ai le fichier makefile suivant pour mon projet et j’aimerais le configurer pour les versions release et debug. Dans mon code, j’ai beaucoup de macros #ifdef DEBUG en place, il suffit donc de définir cette macro et d’append les -g3 -gdwarf2 aux compilateurs. Comment puis-je faire ceci? $(CC) = g++ -g3 -gdwarf2 $(cc) = gcc […]