CMake:“致命错误:cstdio:没有这样的文件或目录”

问题描述

我正在尝试 CMake 一个项目。我刚开始使用它,所以我想对于熟悉 CMake 的人来说一定很明显: 在 main.c 所在的主文件夹中,我包含

#include "tensorflow/lite/micro/all_ops_resolver.h"

找到了这个库。在文件 all_ops_resolver.h 中有一行:

#include "tensorflow/lite/micro/micro_mutable_op_resolver.h"

在 micro_mutable_op_resolver.h 文件中还有一行:

#include <cstdio>

在这会触发 CMake 的错误

> In file included from
> ../main/tensorflow/lite/micro/all_ops_resolver.h:19,>                  from ../main/main.c:16: ../main/tensorflow/lite/micro/micro_mutable_op_resolver.h:18:10: fatal
> error: cstdio: No such file or directory  #include <cstdio>
>                                                    ^~~~~~~~ 
> compilation terminated.`

文件 stdio.h 将位于:

~/.espressif/tools/xtensa-esp32-elf/esp-2020r2-8.2.0/xtensa-esp32-elf/xtensa-esp32-elf/include

在项目目录之外。我无法弄清楚应该进入哪个 CMakeLists.txt 以将编译器指向该文件夹。有人可以帮忙吗?

解决方法

#include <cstdio>

是一个 C++ 头文件,micro_mutable_op_resolver.h 头文件似乎来自 TensorFlow Lite for Microcontrollers,它是一个 C++ 库,因此您可能应该将 main.c 更改为 main.cpp 并编译为 C++。>

,
#include <cstdio>

适用于 C++。

你正在使用 C,所以你应该使用

#include <stdio.h>

相反。