在C++中包含原型文件的正确方法是什么?

What is the correct way to include a proto file in C++?

本文关键字:方法 是什么 文件 C++ 包含 原型      更新时间:2023-10-16

我试图学习C++但我在一些基本步骤上失败了,比如这个。我有一个 .proto 文件,需要从 .cc 文件中包含。

我添加了这一行:

#include "path/to/my/protofile.pb.h"

我通过添加以下内容编辑了匹配的 BUILD 文件:

proto_library(
name = "protofile_proto",
srcs = ["//path/to/my:protofile.proto"],
visibility = [
"//visibility:public",
],
)

当我尝试编译它时,出现以下错误:

path/to/my/ccfile.cc
fatal error: 'path/to/my/protofile.pb.h' file not found

关于如何让编译器在构建时找到原型文件的任何想法?提前谢谢。

当您在#include中使用双引号"时,路径是相对于源文件本身的。如果未找到,则编译器将搜索其标准(和非标准(目录列表以查找头文件。

因此,有两种替代解决方案供您选择:

  1. 确保从源文件中提供正确的相对路径;或
  2. 在编译器列表中添加一个合适的目录,通常使用-I(大写 i(选项(请注意,为此您不妨使用<>而不是双引号(

根据构建系统的不同,您需要添加path/to/my/protofile.pb.h作为源文件的依赖项,以确保在将源文件本身传递给编译器之前生成它。