2009-08-05 6 views
0

J'ai un projet GUI (utilisant Fast Light Toolkit) avec les composants suivants à l'intérieur.Erreur de génération Makefile.win FLTK

Tous les en-têtes et les fichiers listés ici (notez le Makefile.win)

http://www.stroustrup.com/Programming/Graphics/

et c'est le fichier que je suis en train de se rendre à courir.

#include "Simple_window.h" // get access to our window library 
#include "Graph.h"   // get access to our graphics library facilties 

int main() 
{ 
    using namespace Graph_lib; // our graphics facilities are in Graph_lib 

    Point tl(100,100);   // to become top left corner of window 

    Simple_window win(tl,600,400,"Canvas"); // make a simple window 

    Polygon poly; // make a shape (a polygon) 

    poly.add(Point(300,200));  // add point 
    poly.add(Point(350,100));  // add another point 
    poly.add(Point(400,200));  // add a third point 

    poly.set_color(Color::red); // adjust properties of poly 

    win.attach(poly);    // connect poly to window 

    win.wait_for_button();  // give control to display engine 
} 

Au début, quand j'ai essayé de compiler je suis une erreur disant

File: C:\Dev-Cpp\Makefile.win 
Error: [Build Error] [Projectname.exe] Error 1 

Puis je suis entré dans les options du projet et sélectionné « Utiliser makefile personnalisée » sélectionné Makefile personnalisé à partir du site Web qui est enregistré dans mon dossier C++ (et fait partie du projet.)

Quand je l'ai fait, je me suis

File: C:\Users\Alex\Makefile.win (this is a different makefile.win) 
Error: [Build Error] No rule to make target 'c12_3.cpp'(the file I'm compiling) 
     needed by 'c12_3.o'. Stop. 

J'utilise Dev-C++ comme compilateur. Si vous avez besoin de plus d'informations, faites le moi savoir. Je suis plutôt coincé.

Le makefile.win du site après avoir été compilé ressemble à ceci.

# Project: Stroustrup 
# Makefile created by Dev-C++ 4.9.9.2 

CPP = g++.exe 
CC = gcc.exe 
WINDRES = windres.exe 
RES = Stroustrup_private.res 
OBJ = Makefile.o ../Users/Alex/C++/ch12_3.o ../Users/Alex/C++/Graph.o ../Users/Alex/C++/GUI.o ../Users/Alex/C++/Simple_Window.o ../Users/Alex/C++/Window.o $(RES) 
LINKOBJ = Makefile.o ../Users/Alex/C++/ch12_3.o ../Users/Alex/C++/Graph.o ../Users/Alex/C++/GUI.o ../Users/Alex/C++/Simple_Window.o ../Users/Alex/C++/Window.o $(RES) 
LIBS = -L"C:/Dev-Cpp/lib" -mwindows -lfltk -lole32 -luuid -lcomctl32 -lwsock32 -lm 
INCS = -I"C:/Dev-Cpp/include" 
CXXINCS = -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include" 
BIN = Stroustrup.exe 
CXXFLAGS = $(CXXINCS) 
CFLAGS = $(INCS) -DWIN32 -mms-bitfields 
RM = rm -f 

.PHONY: all all-before all-after clean clean-custom 

all: all-before Stroustrup.exe all-after 


clean: clean-custom 
    ${RM} $(OBJ) $(BIN) 

$(BIN): $(OBJ) 
    $(CPP) $(LINKOBJ) -o "Stroustrup.exe" $(LIBS) 

Makefile.o: Makefile.win 
    $(CPP) -c Makefile.win -o Makefile.o $(CXXFLAGS) 

../Users/Alex/C++/ch12_3.o: ../Users/Alex/C++/ch12_3.cpp 
    $(CPP) -c ../Users/Alex/C++/ch12_3.cpp -o ../Users/Alex/C++/ch12_3.o $(CXXFLAGS) 

../Users/Alex/C++/Graph.o: ../Users/Alex/C++/Graph.cpp 
    $(CPP) -c ../Users/Alex/C++/Graph.cpp -o ../Users/Alex/C++/Graph.o $(CXXFLAGS) 

../Users/Alex/C++/GUI.o: ../Users/Alex/C++/GUI.cpp 
    $(CPP) -c ../Users/Alex/C++/GUI.cpp -o ../Users/Alex/C++/GUI.o $(CXXFLAGS) 

../Users/Alex/C++/Simple_Window.o: ../Users/Alex/C++/Simple_Window.cpp 
    $(CPP) -c ../Users/Alex/C++/Simple_Window.cpp -o ../Users/Alex/C++/Simple_Window.o $(CXXFLAGS) 

../Users/Alex/C++/Window.o: ../Users/Alex/C++/Window.cpp 
    $(CPP) -c ../Users/Alex/C++/Window.cpp -o ../Users/Alex/C++/Window.o $(CXXFLAGS) 

Stroustrup_private.res: Stroustrup_private.rc 
    $(WINDRES) -i Stroustrup_private.rc --input-format=rc -o Stroustrup_private.res -O coff 

Répondre

1

Vous ne devez pas définir explicitement CPP et CC. Ceux-ci sont déjà définis pour vous par Make. En outre, vous devez utiliser CXX au lieu de CPP (par défaut, CXX fait référence au compilateur C++, alors que CPP fait référence au préprocesseur C). En outre, vous n'avez pas besoin de donner autant de cibles. Il existe déjà des règles de génération automatique qui génèrent un fichier .o à partir du fichier .cpp avec le même nom de base. De plus, votre règle "Makefile.o: Makefile.win" n'a aucun sens (je doute que vous compiliez un makefile). Je vous recommande fortement d'apprendre CMake, car cela vous facilitera la vie. Sauf cela, vous pourriez vouloir en savoir plus sur Make.

EDIT:

J'ai remarqué que vos chemins ont des barres obliques ("/") au lieu de barre oblique inverse ("\ "), ce qui pourrait être un problème sur Windows. Alors que normalement ce n'est pas un problème avec Cygwin, cela peut être un problème si vous mélangez les deux types de barre oblique.

+0

Tout ce que j'ai fait était de télécharger le fichier sur le site. Je n'ai rien écrit de tout sauf le premier fichier que j'ai posté. – trikker

+0

Peut-être que vous devriez obtenir un autre instructeur/manuel, alors. Celui-ci semble vous mener vers une route sombre et effrayante. Par exemple, Qt est plus simple et plus multiplateforme que FLTK. Et les fichiers de compilation que vous avez reçus sont très peu portables et fragiles. –

+0

Eh bien, le manuel est le nouveau de Bjarne Stroustrup. Il ne couvre que GUI pour quelques chapitres. J'ai l'impression d'avoir mal organisé les fichiers ou fait quelque chose de mal en cours de route. Malheureusement, le livre et le site ne fournissent absolument aucun tutoriel sur le fonctionnement de FLTK car "tous les EDI sont très différents". – trikker