【问题标题】:AOSP Build: How to skip local header from includeAOSP Build:如何从包含中跳过本地标头
【发布时间】:2016-05-30 07:30:56
【问题描述】:

我已经对 bluedroid 代码进行了修改。

我的代码需要使用 usual semaphore.h,它位于:<aosp_root>/prebuilts/ndk/current/platforms/<platform>/<arch>/usr/include/semaphore.h

现在,在 AOSP 6.0+ 中,bluedroid 驻留在<aosp_root>/system/bt/

其中有一个标题:<aosp_root>system/bt/osi/include/semaphore.h

在通常的 AOSP 构建中,如果我在代码中留下一个简单的 #include <semaphore.h>,则会包含不兼容的 osi 标头。有没有办法修改构建系统,以便 ndk 的标头用于我的代码?

我很乐意将这个相对路径包含在我的代码中,但 <arch>(可能还有 <platform>)是/是编译时变量,不应该被硬编码。也欢迎为此解决方法作为替代答案。

Link to osi's header
Link to bluedroid main make file

【问题讨论】:

    标签: android android-ndk android-source


    【解决方案1】:

    我发现要么我需要在我的代码中为正确的标头提供固定路径,要么 -

    因为无论如何我都在修改 bluedroid 代码,所以我继续修改了 bluedroid 的 semaphore.h。 rouge semaphore.h 中的这一行有帮助:

    #include_next "semaphore.h"

    gcc 扩展 FTW。这应该会继续工作,直到 android ndk 继续使用 gcc ..

    我知道随之而来的一般警告。我没有根据正确的信号量编写自己的单独信号量包装库,这是我能找到的唯一方法。

    我考虑的另一个替代方法是重命名 bluedroid 的 semaphore.h,但这将成为维护的噩梦。

    【讨论】:

      猜你喜欢
      • 2023-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-26
      • 2016-10-28
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      相关资源
      最近更新 更多