Android.bp:如何添加外部标头.h文件

问题描述 投票:3回答:2

我有一个与How to add external header files during bazel/tensorflow build类似的问题。但我希望有更好的解决方案。

我有一个在其他位置需要一些外部.h头文件的模块。假设我尝试包含“ vendor / external / include / thirdpary.h”,在Android.bp中,我添加一些行,如:

include_dirs: [
"vendor/external/include",
]

但是当我将其包含在CPP文件中时,编译器抱怨该文件不存在:

#include "thirdpary.h"
android hal android-soong
2个回答
0
投票

仅通过以下方式包含库的头文件

#include "/path/to/library/header.h"

然后在* .pro文件中使用LIBS。


0
投票

使用include_dirs是正确的方法。根据您在描述中所写的内容,它应该可以工作。

以下是一些有关错误检查的建议:

vendor/external/include实际上是$ANDROID_BUILD_TOP的子文件夹吗?

include_dirs中的目录必须相对于AOSP根目录指定。如果路径相对于Android.bp,则必须改用local_include_dirs

cc_binary {
    name: "my-module",
    srcs: [ "main.cpp" ],
    include_dirs: [ "vendor/external/include" ]
}

cpp文件是否在与srcs相同的模块定义的include_dirs列表中?

如果要从模块所依赖的库中继承包含目录,则该库应使用export_include_dirs

cc_library {
    name: "my-library",
    export_include_dirs: [ "include" ]
}

cc_binary {
    name: "my-module",
    srcs: [ "main.cpp" ],
    static_libs: [ "my-library"] 
}

构建模块时,将向编译器提供哪些包含目录?

重建模块并检查-I选项。

m my-module | grep "main.cpp" | sed 's/-I/\n-I/g'
© www.soinside.com 2019 - 2024. All rights reserved.