AOSP 构建:如何从 include 中跳过本地 header
AOSP Build: How to skip local header from include
我修改了bluedroid代码
我的代码需要使用 usual semaphore.h 位于:<aosp_root>/prebuilts/ndk/current/platforms/<platform>/<arch>/usr/include/semaphore.h
现在,在 AOSP 6.0+ 中,bluedroid 位于 <aosp_root>/system/bt/
在那里,有一个 header 位于:<aosp_root>system/bt/osi/include/semaphore.h
在通常的 AOSP 构建中,如果我在我的代码中留下一个简单的 #include <semaphore.h>
,osi header 就会被包含进来,这是不兼容的。有没有办法修改构建系统,以便 ndk 的 header 用于我的代码?
我很乐意在我的代码中包含这个相对路径,但是 <arch>
(可能 <platform>
)is/are 编译时变量,不应硬编码。也欢迎将此解决方法作为替代答案。
我发现我需要提供固定路径来更正我的代码中的 header,或者 -
因为我一直在修改 bluedroid 代码,所以我继续修改了 bluedroid 的 semaphore.h。 rouge semaphore.h 中的这一行有帮助:
#include_next "semaphore.h"
gcc 扩展 FTW。这应该继续工作直到 android ndk 继续使用 gcc..
我知道随之而来的一般警告。除了基于正确的信号量编写我自己的独立信号量包装器库之外,这是我能找到的唯一方法。
我考虑过的另一个替代方法是重命名 bluedroid 的 semaphore.h,但这将成为维护的噩梦。
我修改了bluedroid代码
我的代码需要使用 usual semaphore.h 位于:<aosp_root>/prebuilts/ndk/current/platforms/<platform>/<arch>/usr/include/semaphore.h
现在,在 AOSP 6.0+ 中,bluedroid 位于 <aosp_root>/system/bt/
在那里,有一个 header 位于:<aosp_root>system/bt/osi/include/semaphore.h
在通常的 AOSP 构建中,如果我在我的代码中留下一个简单的 #include <semaphore.h>
,osi header 就会被包含进来,这是不兼容的。有没有办法修改构建系统,以便 ndk 的 header 用于我的代码?
我很乐意在我的代码中包含这个相对路径,但是 <arch>
(可能 <platform>
)is/are 编译时变量,不应硬编码。也欢迎将此解决方法作为替代答案。
我发现我需要提供固定路径来更正我的代码中的 header,或者 -
因为我一直在修改 bluedroid 代码,所以我继续修改了 bluedroid 的 semaphore.h。 rouge semaphore.h 中的这一行有帮助:
#include_next "semaphore.h"
gcc 扩展 FTW。这应该继续工作直到 android ndk 继续使用 gcc..
我知道随之而来的一般警告。除了基于正确的信号量编写我自己的独立信号量包装器库之外,这是我能找到的唯一方法。
我考虑过的另一个替代方法是重命名 bluedroid 的 semaphore.h,但这将成为维护的噩梦。