Lorsque je compile du code en utilisant GNU Make, j'obtiens plusieurs avertissements comme:
clang: warning: -lGui: 'linker' input unused
C'est probablement parce que j'ai foiré quelque chose dans mon Makefile (ci-dessous). Quelqu'un peut-il m'indiquer le problème?
CXX=g++
CC=g++
CXXFLAGS=-g -Wall -W -Wshadow -Wcast-qual -Wwrite-strings $(Shell root-config --cflags --glibs)
CPPFLAGS+=-MMD -MP
LDFLAGS=-g $(Shell root-config --ldflags)
LDLIBS=$(Shell root-config --libs)
xSec_x: xSec_x.o xSec.o Analysis.o
-include xSec_x.d xSec.d Analysis.d
xSec.o: xSec.cpp xSec.h Analysis.h Analysis.cpp
xSec_x.o: xSec_x.cpp xSec.h Analysis.h
clean:
rm -f @rm -f $(PROGRAMS) *.o *.d
Ce message signifie que vous transmettez des indicateurs de l'éditeur de liens (comme -l
Qui indique à l'éditeur de liens d'extraire une bibliothèque) au compilateur.
Cela signifie que le résultat de l'exécution de root-config --cflags --glibs
Génère des indicateurs de l'éditeur de liens, et ceux-ci vont dans CXXFLAGS
, qui est transmis au compilateur. Je ne sais pas ce que root-config
Est, mais vous devriez enquêter sur sa ligne de commande et l'invoquer d'une manière où il ne génère pas de drapeaux de l'éditeur de liens. La suppression de l'option --glibs
Le fera probablement.
ETA: vous vraiment voulez utiliser :=
Pour affecter ces variables drapeaux si vous allez y exécuter $(Shell ...)
. Cela fonctionnera dans les deux cas, mais si vous utilisez =
, La commande Shell sera exécutée à chaque fois que make étend la variable, qui est une fois par compilation. Si vous utilisez :=
, Il ne sera exécuté qu'une seule fois, lorsque le makefile sera analysé.
J'ai eu cette même erreur et la raison en est que j'ai oublié d'ajouter -I
devant mes chemins inclus pour les cflags dans le makefile. Par exemple:
CFLAGS += $(path)/dir/subdir/include -> Got the above mentioned error.
CFLAGS += -I$(path)/dir/subdir/include -> Fixed the issue.