Ho un makefile che crea il mio progetto con g ++ 4.6.Utilizzo di Clang ++ in Makefile al posto di G ++
#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
Quando cambio la prima linea ad essere GXX = clang++ -std=c++0x
clang getta qualche errore piuttosto densa di non iostream trovare le args corrette o qualcosa del genere insieme a molti altri errori dopo che (ma questo è l'errore "root").
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)>
questo è un problema con il mio makefile, o è ci potrebbe essere davvero la differenza in questo semplice compilazione?
Uso clang 2.9.
Nota: La linea che clang si lamenta è #include <iostream>
Io non sono un esperto di C++, ma [questa pagina] (http://clang.llvm.org/cxx_status.html) sembra indicare che clang 2.9 non è 100% pronto per C++ 0x - forse questo è parte del problema? –
Non si blocca su un problema C++ 0x, si blocca su includendo iostream penso – soandos
I percorsi nel messaggio di errore sembrano come se avessi i file di intestazione di g ++ 4.6 piuttosto che i file di intestazione di clang. I file di intestazione g ++ tendono ad usare estensioni specifiche di gcc e cose che probabilmente non funzioneranno con clang. –