【问题标题】:Android.bp: how to add external header .h filesAndroid.bp:如何添加外部头 .h 文件
【发布时间】:2018-12-04 05:49:01
【问题描述】:
【问题讨论】:
标签:
android
hal
android-soong
【解决方案1】:
使用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" ]
}
srcs列表中的cpp文件是否与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'
【解决方案2】:
通过简单地包含库的头文件
#include "/path/to/library/header.h"
然后在您的 *.pro 文件中使用 LIBS。
【解决方案3】:
在上面的代码中,“thirdpary.h”文件不会被引用或包含,这就是出现上述问题的原因。
所以要解决上述问题,请给出相对路径。
就像下面的代码sn-p:
如果dir结构中的头文件路径为:
com/example/abc/header.h
像这样,如果它只在使用中就在实现中
#include "thirdpary.h"
那么你需要给出路径直到头文件目录。
include_dirs: [
"vendor/external/include/com/example/abc",
]
希望这能解决问题。