Tengo un archivo MAKE que construye mi proyecto muy bien con g ++ 4.6.Usando Clang ++ en Makefile en lugar de 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
Cuando cambio la primera línea para ser GXX = clang++ -std=c++0x
sonido metálico lanza algún error bastante densa sobre iostream no encontrar los argumentos correctos o algo junto con muchos otros errores después de eso (pero esto es el error "raíz").
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)>
Es éste un problema con mi makefile, o es podría realmente haber una diferencia en este simple compilación?
Usando clang 2.9.
Nota: La línea que CLANG se queja es #include <iostream>
No soy experto en C++, pero [esta página] (http://clang.llvm.org/cxx_status.html) parece indicar que clang 2.9 no es 100% listo para C++ 0x - ¿Tal vez eso sea parte del problema? –
No está fallando en un problema de C++ 0x, se está bloqueando al incluir iostream Creo que – soandos
Las rutas de acceso en el mensaje de error parecen que está obteniendo los archivos de encabezado de g ++ 4.6 en lugar de los archivos de encabezado de clang. Los archivos de encabezado g ++ tienden a usar extensiones específicas de gcc y cosas que probablemente no funcionarán con clang. –