gcc -D选项没有做我想的那样

时间:2012-03-03 01:45:09

标签: gcc makefile asmjit

我正在尝试在项目中使用AsmJit。这是我正在使用的makefile:

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

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

尝试此操作时出现编译器错误,因此我从dep / AsmJit / Config.h中取消注释了行#define ASMJIT_API,并从makefile中删除了-D开关,并且干净地编译了所有内容。我正在使用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 个答案:

答案 0 :(得分:6)

#define ASMJIT_API-DASMJIT_API之间存在差异。

#define语句将ASMJIT_API定义为空,the -D flag defines the preprocessor constant as 1

使用-D标志,build.h的第274行扩展为

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

导致编译错误。

答案 1 :(得分:0)

请勿在-D和ASMJIT_API之间插入空格。同上-I

CFLAGS = -DASMJIT_API -Idep/

你去。