就像这个问题WebRTC not building for Windows一样,我无法在VS 2015的Windows 7 64位上构建WebRTC,但问题不同。 获取和 gclient sync 顺利运行,没有错误。但是当我运行gn gen / WebRTC时,我得到以下错误
ERROR at //third_party/protobuf/proto_library.gni:229:15: File is not inside out
put directory.
outputs = get_path_info(protogens, "abspath")
^---------------------------------
The given file should be in the output directory. Normally you would specify
"$target_out_dir/foo" or "$target_gen_dir/foo". I interpreted this as
"//out/Default/gen/webrtc/rtc_tools/event_log_visualizer/chart.pb.h".
See //webrtc/rtc_tools/BUILD.gn:184:3: whence it was called.
proto_library("chart_proto") {
^-----------------------------
See //BUILD.gn:16:5: which caused the file to be included.
"//webrtc/rtc_tools",
^-------------------
Traceback (most recent call last):
File "D:/temp/webrtc-checkout/src/build/vs_toolchain.py", line 459, in <module>
sys.exit(main())
File "D:/temp/webrtc-checkout/src/build/vs_toolchain.py", line 455, in main
return commands[sys.argv[1]](*sys.argv[2:])
File "D:/temp/webrtc-checkout/src/build/vs_toolchain.py", line 431, in GetTool
chainDir
win_sdk_dir = SetEnvironmentAndGetSDKDir()
File "D:/temp/webrtc-checkout/src/build/vs_toolchain.py", line 424, in SetEnvi
ronmentAndGetSDKDir
return NormalizePath(os.environ['WINDOWSSDKDIR'])
File "D:\temp\depot_tools\win_tools-2_7_6_bin\python\bin\lib\os.py", line 423,
in __getitem__
return self.data[key.upper()]
KeyError: 'WINDOWSSDKDIR'
我尝试添加上述问题中提到的变量,但没有帮助。 任何帮助将不胜感激。
答案 0 :(得分:0)
您需要在环境变量(windows sdk)中设置LIB和INCLUDE。 并将PATH设置为正确版本的python(我认为是2.7.6)。
所以你的环境变量应该是:
LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.15063.0\ucrt\x64;
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.15063.0\um\x64
INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\shared;
C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\ucrt;
C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\um;
C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\winrt
PATH=C:\src\depot_tools\python276_bin\
请标记是否有效
答案 1 :(得分:0)
我正在使用https://github.com/cloudwebrtc/libwebrtc-build中的libwebrtc,其中该编译文件包装在CMake自定义调用中,并且我尝试修改LIB / INCLUDE,但您可能引用了Visual Studio IDE变量(命令行中没有该变量)或无法正常运行的地方。
我现在的保守解决方案是在libwebrtc编译之前打印此消息:
spawn
另一种方法是将https://github.com/nareix/webrtc.build/blob/69e87f529e935111b2b8c774ce283366fa2157d0/vs_toolchain.py#L212修补到(伪代码):
ucrt_dll_dirs = os.path.join(“ C:/ Program Files(x86)/ Windows Kits / 10 / Redist / 10.0.18362.0 /”,'DLLs,target_cpu)
但是由于该python代码是从libwebrtc中检出的,并且可能会被定期覆盖,所以我选择了手动解决方案。
xcopy / Y / E / I“ c:\ Program Files(x86)\ Windows Kits \ 10 \ Redist \ 10.0.18362.0 \ ucrt”“ c:\ Program Files(x86)\ Windows Kits \ 10 \ Redist \
https://bugs.chromium.org/p/webrtc/issues/detail?id=7677#c24中提出的所有解决方案对我来说也都失败了。
我只是希望python开发人员会花掉另一个环境变量,我们可以在其中传递目录进行查询。甚至更好的是,为什么Microsoft首先创建了如此糟糕的基础架构->在UNIX上可以使用“ pkg-config”这一概念来进行自定义库检测。