2016-03-30 9 views
-1

erhielt einen Auftrag ein einfaches Programm in C++ 11 zu schreiben, die die folgenden Dateien enthält:Kompilieren C++ 11-Programm die einfache Art und Weise Make-Datei mit

  • main.cpp
  • house.h
  • Baum .h

Die Hauptfunktion ist offensichtlich in der main.cpp Datei. main.cpp enthält die 2 Header-Dateien und verwendet sie.

, wenn ich unter Linux zu kompilieren versucht, schrieb ich:

g++ -std=c++11 -O2 -Wall -pedantic -pthread main.cpp -o prog 

Und ich habe eine prog-Datei, die ich laufen konnte.

Dann habe ich versucht, es zu kompilieren eine Make-Datei verwenden, was ich tat, war dies:

all: 
    g++ -std=c++11 -O2 -Wall -pedantic -pthread main.cpp -o prog 

und traf alle

Leider machen es nicht funktioniert. Versucht, das Internet zu suchen, wie man es richtig macht, kein Glück. Können Sie mir sagen, wie es gemacht werden muss?

Auch, wie man eine intelligente kompilieren? d.h. kompilieren nur wenn die obigen Dateien geändert werden.

Danke!

+6

"Leider funktioniert es nicht" was es bedeutet? Kompilieren Sie nicht? Gibt es einige Fehlermeldungen? Die zweite Zeichenfolge muss mit Tabulatur beginnen – DvoryankinEvgeny

+0

Es funktioniert für mich –

+1

Stellen Sie sicher, dass die 'g ++' eingerückt ist mit einem 'TAB' nicht Leerzeichen. – Galik

Antwort

0

In Makefile

all: 
<TAB>g++ -std=c++11 -O2 -Wall -pedantic -pthread main.cpp -o prog 

Dies funktioniert, Beachten Sie hier, dass <TAB> ist das Tab-Zeichen, die wir einsetzen müssen.

zusammengestellt es einfach durch

make 

oder für einen einfachen Fällen Ausgabe stellt make eine Abkürzung mit Standardregel. Sie können unseren Code without using Makefile kompilieren.

CXXFLAGS=-std=c+=11 -Wall -pedantic -pthread make main 

Aber dieser Ansatz wird der Programmname als Name der Datei, also Haupt hier, statt prog nennen, wie Sie

0

diese erstellen wollte einen Makefile nur mit den folgenden Zeilen und Check-out:

CFLAGS += -g -O2 -Wall -W -pedantic 
CXXFLAGS=$(CFLAGS) -std=c++11 
CFLAGS += -pthread 
LDFLAGS += -pthread 

Und geben Sie make main. Make wird seine eingebauten Regeln durchsuchen und feststellen, dass es eine Möglichkeit gibt, von main.cpp zu einem kompilierten Programm mit dem Namen main zu gelangen.Es wird dann eine eingebaute in der Regel ausführen, wie etwas aussieht:

all: main 

Und die eingebaute in impliziten Regeln bauen main:

$(CXX) $(CXXFLAGS) $(LDFLAGS) $^ -o [email protected] 

Wenn Sie nur make wollen eingeben, dann können Sie hinzufügen für Sie, wenn Sie make eingeben.

Verwandte Themen