找出定义宏的文件

时间:2016-08-19 15:27:33

标签: android gnu-make

我有一个Android AOSP源代码树,我试图移植到UbuntuTouch。原始树构建了一个可用的AOSP rom,但是当我尝试在其上构建Ubuntu时,我的构建在许多具有不同错误的文件上不断失败,我认为我已经能够调试以发现所有这些都是名为&#34; Y&#34;的变量Make会初始化,但这似乎与已经具有相同名称的宏混淆,从而导致不可预测的错误类型。事实上,我已经能够解决以前的问题,在失败进入.c源文件的函数之前取消定义宏Y.我知道,这不是一个好的解决方法,现在又出现了另一个(我认为它相关),并且我已经厌倦了逐个修补所有这些文件:< / p>

system/core/include/utils/StrongPointer.h:101:23: error: expected nested-name-specifier before numeric constant
system/core/include/utils/StrongPointer.h:101:23: error: expected '>' before numeric constant

这是错误的一行:

100 private:    
101     template<typename Y> friend class sp;
102     template<typename Y> friend class wp;
103     void set_pointer(T* ptr);
104     T* m_ptr;

我怀疑这是同一个问题吗? 我怎样才能找到整个树中的哪个文件全局定义该宏?

1 个答案:

答案 0 :(得分:0)

在我的shell中使用-x标志,我能够在编译器调用命令行a&#34; -DY&#34;通过,显然定义了一个名为&#34; Y&#34;并将其初始化为1。 经过一些调查后,我发现从ProjectConfig.mk变量中获取的一些值在大写后将作为宏传递给预处理器。我错误地将其中一个值设置为&#34; y&#34;,引导构建系统将其作为宏传递给#34; Y&#34;到工具链,造成所有这些混乱。

非常感谢irc.freenode.org/#gcc的人。