尝试在 Windows 10 上从 CMake 运行 cpp 协议缓冲区编译器时,此无效路径问题的原因是什么,我该如何解决?

问题描述

我正在尝试在 Windows 10 计算机上构建 aasdk 项目。为此,我尝试在 git repo 目录的根目录中运行以下命令:

name

最后一个命令显然是失败的那个。运行该命令时,我得到以下输出

mkdir buildDir
cd buildDir
cmake ..\
cmake --build . --config Release

其中 -- Selecting Windows SDK version 10.0.18362.0 to target Windows 10.0.19041. -- Found libusb-1.0: -- - Includes: C:/libusb-master/x64/Release -- - Libraries: C:/libusb-master/x64/Release/lib/libusb-1.0.lib -- Configuring done -- Generating done -- Build files have been written to: C:/aasdk-development/buildDir Microsoft (R) Build Engine version 16.8.3+39993bd9d for .NET Framework copyright (C) Microsoft Corporation. All rights reserved. C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(200,5): warning MSB8062: Custom build for item "C:\aasdk-development\buildDir\CMakeFiles\b2b8e2a3c1aae1e014a7c3c3f8aadde7\AVCha nnelData.pb.h.rule" specifies invalid path "C:\aasdk-development\buildDir\aasdk_proto\protobuf::protoc" as an additional dep endency. This may cause incremental build to work incorrectly. [C:\aasdk-development\buildDir\aasdk_proto\aasdk_proto.vcxpro j] ... Running cpp protocol buffer compiler on C:/aasdk-development/aasdk_proto/AVChannelData.proto The filename,directory name,or volume label Syntax is incorrect. C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(238,5): error MSB8066: Custom build for 'C:\aasdk-development\buildDir\CMakeFiles\b2b8e2a3c1aae1e014a7c3c3f8aadde7\AVChannelDat a.pb.h.rule;...' exited with code 123. [C:\aasdk-development\buildDir\aasdk_proto\aasdk_proto.vcxproj] 是对 ... 目录中的每个 *.proto 文件重复的相同消息。据我所知,似乎认为某些路径无效。我不知道的是,哪些路径以及它们以何种方式无效。

在第一条评论之后,我决定检查它从哪里获得这些路径。以下是 protobuf 的 aasdk_proto 内容,位于 CMakeLists.txt 目录中:

aasdk_proto

有趣的是第 5 行,它在调用 include(FindProtobuf) find_package(Protobuf required) include_directories(${PROTOBUF_INCLUDE_DIR}) file(GLOB_RECURSE proto_files ${CMAKE_CURRENT_SOURCE_DIR}/*.proto) protobuf_generate_cpp(proto_sources proto_headers ${proto_files}) add_library(aasdk_proto SHARED ${proto_headers} ${proto_sources}) target_link_libraries(aasdk_proto ${PROTOBUF_LIBRARIES}) 之前枚举了相关目录中的所有 *.proto 文件,我认为这是导致错误的部分。

在第 5 行后添加 protobuf_generate_cpp 以打印路径产生正确的值,至少在我看来:

message(STATUS ProtoFiles: ${proto_files})

我用反斜杠代替了正斜杠,只是为了逗笑,因为 Windows 就是这样喜欢它们的,但这不起作用。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...