在源代码里面如果这样是定义的:
#ifdef MACRONAME
//可选代码
#endif
那在makefile里面
gcc -D MACRONAME=MACRODEF
或者
gcc -D MACRONAME
这样就定义了预处理宏,编译的时候可选代码就会被编译进去了。
对于GCC编译器,有如下选项:
-Dmacro=string 或 -D macro=string,等价于在头文件中定义:#define macro string。例如:-D TRUE=true,等价于:#define TRUE true
-Dmacro 或 -D macro,等价于在头文件中定义:#define macro 1,实际上也达到了定义:#define
macro的目的。例如:-DLINUX,等价于:#define LINUX 1(而在源码中的 #define LINUX 是将LINUX定义为空,但LINUX这个宏定义有效)。
--define-macro macro=string与-D macro=string作用相同。
使用 make V=1 可以打印编译的命令log。在编译android的源码时,可以用 make showcommands 来显示编译的命令,与make V=1一样,但不知 showcommands 是否对其它的linux类编译是否有效。