esp32 - 如何将“仅标头 (.hpp)”库用作组件?
问题描述
我正在尝试包含一个使用诸如 blah.hpp 之类的文件作为“组件”的库,并使用 esp32 idf 编译它们。
我在项目中创建了组件子目录,并将库复制到组件目录的子目录中。如果我使用样板component.mk
文件,编译器看不到带有 .hpp 后缀的文件。如果我将文件重命名为blah.hpp
编译blah.cpp
器确实会看到该blah.cpp
文件,那么它只是看不到带有.hpp
后缀的文件
我尝试在 component.mk 文件中添加以下内容(我在此处注意到),但随后出现以下错误。
make[1]: *** No rule to make target '/home/john/development/esp/ble_test2/components/rxcpp/./rx-sources.o', needed by 'librxcpp.a'. Stop.
这是我正在尝试使用的 component.mk 文件(带有我上面提到的添加行)。
#
# Main component makefile.
#
# This Makefile can be left empty. By default, it will take the sources in the
# src/ directory, compile them and link them into lib(subdirectory_name).a
# in the build directory. This behaviour is entirely configurable,
# please read the ESP-IDF documents if you need to do this.
COMPONENT_ADD_INCLUDEDIRS=.
COMPONENT_OBJS += $(foreach compsrcdir,$(COMPONENT_SRCDIRS),$(patsubst %.hpp,%.o,$(wildcard $(COMPONENT_PATH)/$(compsrcdir)/*.hpp)))
## Uncomment the following line to enable exception handling
CXXFLAGS+=-fexceptions
CXXFLAGS+= -std=c++11
这似乎是一件很容易解决的事情,我确实看到 esp32 idf 中的组件也使用诸如 blah.hpp 之类的文件,例如这里,但我无法设置我需要设置的选项以使我的编译。
顺便说一句,不确定在 esp32 上尝试使用 rxcpp 是否是个好主意,但我很好奇它是否能工作:)
解决方案
与包含任何头文件的方式相同 - 只需#include
将其放在适当的.cpp
文件中即可。如果您使用的是 Makefile,请确保将对该文件的依赖项添加.hpp
到该文件生成的目标文件中,.cpp
就像您添加一个.h
文件和一个.c
文件一样。
不要尝试使用 rxcpp 作为组件。它不应该被构建为一个库。就像回购所说的那样,它只是标题。你只是#include
在你需要的地方。
推荐阅读
- python - 如何对 DataFrame 进行排序并在 Pandas 中显示?
- oracle - 我没有可视化我在 Oracle 12c 数据库中的 SQL Developer 中的 sqlplus 中所做的更改,我正在使用 docker 提出这些更改
- python - 将 python 代码分配给 jupyter notebook 快捷方式
- vim - 尽可能快地使 w0rp 异步 Lint 引擎“ALE”?
- powerapps - PowerApps interate through list updates
- javascript - React 组件设置状态未按预期工作
- python - 将 JSON 元素分隔到 pandas 数据框的列中
- image - 在二值化图像中分离交叉段
- android - 无法打开/qemu.conf,错误:2
- variables - 如何气流变量的值包含外来字符?