我在 PlatformIO 项目中使用这个库https://registry.platformio.org/libraries/joaolopesf/RemoteDebug
我遇到了这个问题 图书馆有一个过时的包含
#include <hwcrypto/sha.h>
导致编译错误。
解决方案是用更新的 include 替换它
<esp32/sha.h>
.
虽然这是一个有效的解决方案,但我不喜欢必须编辑库代码才能做到这一点。
那么问题是,我是否可以通过某种方式从用户代码中解决这个问题? 像
#define <hwcrypto/sha.h> <esp32/sha.h>
.
(那个特定的宏抛出不同的编译错误)。
如果我能以某种方式从用户代码中解决这个问题?
没有。您必须编辑源文件。
在源代码层面没有解决方案来替换包含文件名。然而,您可能可以使用符号链接来解决问题:
从主源目录运行这些命令:
mkdir compat
mkdir compat/hwcrypto
echo '#include <esp32/sha.h>' > compat/hwcrypto/sha.h
然后您可以编译库源未修改传递
-Icompat
作为额外的编译选项。您可以为 compat
目录使用不同的路径,以避免修改源代码树。