我有一个与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"
仅通过以下方式包含库的头文件
#include "/path/to/library/header.h"
然后在* .pro文件中使用LIBS。
使用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
相同的模块定义的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'