2012-03-03 13 views
6

Estoy tratando de usar AsmJit en un proyecto. Este es el makefile que estaba usando:gcc -D opción no hacer lo que pensé que sería

CC = g++ 
CFLAGS = -D ASMJIT_API -I dep/ 

test: src/main.cpp 
     $(CC) $(CFLAGS) src/main.cpp -o test.exe 

que estaba recibiendo errores de compilación cuando se trata de esto, así que en lugar de eso sin comentar la línea #define ASMJIT_API de dep/AsmJit/config.h y retirar, y el interruptor D del makefile y todo compilado limpiamente Estoy usando gcc 4.5.3. ¿Algunas ideas?

Gracias.

EDIT: Errores de compilador

g++ -DASMJIT_API -Idep/ src/main.cpp -o test.exe 
In file included from dep/AsmJit/Assembler.h:31:0, 
       from src/main.cpp:1: 
dep/AsmJit/Build.h:274:1: error: expected unqualified-id before numeric constant 
In file included from dep/AsmJit/AssemblerX86X64.h:36:0, 
       from dep/AsmJit/Assembler.h:51, 
       from src/main.cpp:1: 
dep/AsmJit/Defs.h:408:1: error: expected unqualified-id before numeric constant 
In file included from dep/AsmJit/DefsX86X64.h:36:0, 
       from dep/AsmJit/Defs.h:423, 
       from dep/AsmJit/AssemblerX86X64.h:36, 
       from dep/AsmJit/Assembler.h:51, 
       from src/main.cpp:1: 
dep/AsmJit/Util.h:412:8: error: expected identifier before numeric constant 
dep/AsmJit/Util.h:412:8: error: expected unqualified-id before numeric constant 
src/main.cpp:6:1: error: expected ‘}’ at end of input 
makefile:5: recipe for target `test' failed 
make: *** [test] Error 1 
+0

¿Qué errores de compilador está recibiendo? – mizo

+0

Básicamente, errores que apuntan al hecho de que algo no está definido correctamente. Cuando se define #define ASMJIT_API, los demás definen el trabajo según lo previsto. Editaré mi publicación para incluirla si me ayuda. – flumpb

+0

sí, eso ayudaría si publicaras más código. – selbie

Respuesta

6

Hay una diferencia entre #define ASMJIT_API y -DASMJIT_API.

La declaración #define define ASMJIT_API como nada, mientras que the -D flag defines the preprocessor constant as 1.

Usando la bandera -D, la línea 274 de build.h expande a

1 void assertionFailure(const char* file, int line, const char* exp); 

que causa el error compilador.

+1

¡OMG, gracias! Reemplacé -D ASMJIT_API con -D ASMJIT_API = – flumpb

0

No inserte un espacio entre D y ASMJIT_API. Ídem para -I

CFLAGS = -DASMJIT_API -Idep/ 

Ahí lo tiene.

+0

@kisplit - Cuando escribe "hacer prueba", ¿ve el -DASMJIT_API como parte de la línea de comando generada? – selbie

Cuestiones relacionadas