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

您所在的位置:网站首页 怎么引入头文件 关于hal:Android.bp:如何添加外部标头.h文件

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

2023-10-18 23:16| 来源: 网络整理| 查看: 265

我有一个与如何在bazel / tensorflow构建期间添加外部头文件类似的问题。 但我希望有更好的解决方案。

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

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

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

1#include"thirdpary.h"

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

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

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

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

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

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

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

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

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

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

12m my-module | grep"main.cpp" | sed 's/-I/\ -I/g'

在上面的代码" thirdpary.h"文件中将不会被引用或包含,这就是为什么出现上述问题的原因。

因此,要解决上述问题,请给出相对路径。 像下面的代码片段:

如果dir结构中的头文件路径为:

com/example/abc/header.h

像这样并在实施中(如果仅使用

#include"thirdpary.h"

那么您需要提供路径,直到头文件目录。

123include_dirs: [    "vendor/external/include/com/example/abc",     ]

希望这能解决问题。

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

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

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3