Mit Clang++ in der Datei Makefile anstelle von G++

Habe ich ein makefile, das baut mein Projekt schon mit g++ 4.6.

#specify the compiler  
GXX=g++ -std=c++0x

# Specifiy the target  
all: linkedList

# Specify the object files that the target depends on  
# Also specify the object files needed to create the executable  
linkedList: StudentRecord.o Node.o LinkedList.o  ListMain.o
    $(GXX) StudentRecord.o Node.o LinkedList.o  ListMain.o -o linkedList

# Specify how the object files should be created from source files  
LinkedList.o: LinkedList.cpp
    $(GXX)  -c  LinkedList.cpp

ListMain.o: ListMain.cpp
    $(GXX)  -c  ListMain.cpp

StudentRecord.o: StudentRecord.cpp
    $(GXX)  -c  StudentRecord.cpp

Node.o: Node.cpp
    $(GXX)  -c  Node.cpp

Wenn ich die erste Zeile zu GXX = clang++ -std=c++0x clang wirft einige ziemlich dichten Fehler über iostream nicht finden, die richtigen Argumente oder etwas zusammen mit vielen anderen Fehler nach, dass (aber das ist der "root" - Fehler).

In file included from /usr/include/c++/4.6/iostream:39:
In file included from /usr/include/c++/4.6/ostream:39:
In file included from /usr/include/c++/4.6/ios:40:
In file included from /usr/include/c++/4.6/bits/char_traits.h:40:
In file included from /usr/include/c++/4.6/bits/stl_algobase.h:65:
In file included from /usr/include/c++/4.6/bits/stl_pair.h:60:
In file included from /usr/include/c++/4.6/bits/move.h:53:
/usr/include/c++/4.6/type_traits:630:59: error: '_Tp' does not refer to a value
    : public integral_constant<bool, __is_standard_layout(_Tp)>

Ist das ein problem mit meinem makefile, oder könnte es wirklich einen Unterschied in dieser einfachen Zusammenstellung?

Mit clang 2.9.

Hinweis: die Zeile, Die die klappern beschwert sich über ist #include <iostream>

  • Ich bin kein C++ Experte, aber dieser Seite scheint zu zeigen, dass clang 2.9 nicht zu 100% bereit für den c++0x - vielleicht ist das auch Teil des Problems?
  • Seine nicht abstürzt, auf eine c++0x Frage, ist es krachend auf, darunter iostream denke ich
  • Die Pfade in der Fehlermeldung so Aussehen, wie Sie immer g++ - 4.6-header-Dateien, sondern als klammerten sich die header-Dateien. Der g++ - header-Dateien sind in der Regel mit gcc-spezifischen Erweiterungen und Sachen, die wahrscheinlich nicht funktionieren mit clang.
  • Wie behebe ich das?
  • Fügen Sie die Option-v zu erhalten, clang zu drucken Sie alle die Argumente, die es verwendet. Dann können Sie diese Befehle manuell und ändern Sie die Optionen, um zu sehen, ob Sie einzelne übersetzungseinheiten zu bauen, und wenn ja, dann ändern Sie das makefile verwenden Sie die Einstellungen, die Sie entdecken.
InformationsquelleAutor soandos | 2012-03-16
Schreibe einen Kommentar