GCC -D вариант не делает то, что я думал, что это будет - PullRequest
6 голосов
/ 03 марта 2012

Я пытаюсь использовать AsmJit в проекте. Это make-файл, который я использовал:

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

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

Я получал ошибки компилятора при попытке этого, поэтому вместо этого я раскомментировал строку #define ASMJIT_API из файла dep / AsmJit / Config.h и удалил ключ -D из make-файла, и все скомпилировалось чисто. Я использую GCC 4.5.3. Есть идеи?

Спасибо.

РЕДАКТИРОВАТЬ: ошибки компилятора

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

Ответы [ 2 ]

6 голосов
/ 03 марта 2012

Существует разница между #define ASMJIT_API и -DASMJIT_API.

Оператор #define определяет ASMJIT_API как ничто, в то время как флаг -D определяет константу препроцессора как 1.

Используя флаг -D, строка 274 build.h расширяется до

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

вызывает ошибку компилятора.

0 голосов
/ 03 марта 2012

Не вставляйте пробел между -D и ASMJIT_API.То же самое для -I

CFLAGS = -DASMJIT_API -Idep/

Вот, пожалуйста.

...