2012-03-03 16 views
6

Sto provando a usare AsmJit in un progetto. Questo è il makefile stavo usando:gcc -D opzione non facendo quello che pensavo sarebbe

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

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

mi stavo errori del compilatore quando si cerca questo, così invece ho commentata la linea #define ASMJIT_API da dep/AsmJit/config.h, e rimosso l'opzione -D dal makefile e tutto compilato in modo pulito Sto usando gcc 4.5.3. Qualche idea?

Grazie.

EDIT: Errore del compilatore

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

Quali errori del compilatore stai ottenendo? – mizo

+0

Fondamentalmente errori che indicano il fatto che qualcosa non è definito correttamente. Quando #define ASMJIT_API è impostato, gli altri definiscono il lavoro come previsto. Modificherò il mio post per includerli se aiutano a tutti. – flumpb

+0

sì, sarebbe di grande aiuto se avessi postato più codice. – selbie

risposta

6

C'è una differenza tra #define ASMJIT_API e -DASMJIT_API.

L'istruzione #define definisce ASMJIT_API come nulla, mentre the -D flag defines the preprocessor constant as 1.

Utilizzando il flag -D, linea 274 di build.h espande per

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

causa l'errore di compilatore.

+1

OMG, grazie! Ho sostituito -D ASMJIT_API con -D ASMJIT_API = – flumpb

0

Non inserire uno spazio tra -D e ASMJIT_API. Idem per -I

CFLAGS = -DASMJIT_API -Idep/ 

Ecco qui.

+0

@kisplit - Quando digiti "make test", vedi -DASMJIT_API come parte della riga di comando generata? – selbie

Problemi correlati