The*_*ogi 6 c tup visual-studio-2015
我正在尝试编译一个名为"unbox"的J编程语言的解释器,可以在以下网址找到:https://github.com/iocane/unbox
它使用tup构建系统和github指令指定使用Visual Studio工具提示符中的tup命令.我下载了Visual Studio 2015社区,但它没有提供说明中提到的确切提示,因此我使用了VS2015 x86 x64交叉工具命令提示符.安装TUP并将其添加到我的道路,我浏览到哪里克隆"拆箱",并键入目录TUP.
但是,这是问题开始的地方,在输入tup后我得到以下内容:
* 1) CC src/libj\a.c
a.c
*** tup errors ***
tup error: File 'C:\Users\I\AppData\Local\Microsoft\VSCommon\14.0\SQM\VCToolsTelemetry.dat' was written to, but is not in .tup/db. You probably should specify it as an output
*** Command ID=663 ran successfully, but tup failed to save the dependencies.
* 2) CC src/libj\af.c
af.c
*** tup errors ***
tup error: File 'C:\Users\I\AppData\Local\Microsoft\VSCommon\14.0\SQM\VCToolsTelemetry.dat' was written to, but is not in .tup/db. You probably should specify it as an output
*** Command ID=667 ran successfully, but tup failed to save the dependencies.
* 3) CC src/libj\ai.c
ai.c
*** tup errors ***
tup error: File 'C:\Users\I\AppData\Local\Microsoft\VSCommon\14.0\SQM\VCToolsTelemetry.dat' was written to, but is not in .tup/db. You probably should specify it as an output
*** Command ID=669 ran successfully, but tup failed to save the dependencies.
* 4) CC src/libj\ab.c
ab.c
*** tup errors ***
tup error: File 'C:\Users\I\AppData\Local\Microsoft\VSCommon\14.0\SQM\VCToolsTelemetry.dat' was written to, but is not in .tup/db. You probably should specify it as an output
*** Command ID=665 ran successfully, but tup failed to save the dependencies.
[ ETA~=30s Remaining=130 Active=0 ] 2%
*** tup: 4 jobs failed.
Run Code Online (Sandbox Code Playgroud)
如您所见,在tup的数据库中未指定文件VCToolsTelemetry.dat.
有没有人知道阻止Visual Studio使用VSToolsTelemetry.dat的方法?或者我应该联系unbox开发人员并让他将该文件添加到数据库?
任何帮助深表感谢.
Christian Fillion 在这篇评论中给出了解决方案。
\n\n此 Microsoft 页面解释了该文件的用途以及如何防止 Visual Studio 工具写入该文件:
\n\n\n\n\n默认情况下,Visual Studio 安装启用客户反馈。您可以将 Visual Studio 配置为禁用个别计算机上的客户反馈,方法是将以下注册表项的值更改为字符串“0”。
\n
所指的关键是OptIn. 根据该页面,它位于 中HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\VisualStudio\\SQM,尽管它也可能位于HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\VSCommon\\14.0\\SQM(我的 Windows 10 笔记本电脑就是这种情况)。
(微软页面还说它应该是一个字符串,但在我的例子中它是一个 DWORD 并且工作正常。)
\n\n\n\n\n或者我应该联系拆箱开发人员并让他将该文件添加到数据库中?
\n
发生的情况是,Tup(一个基于文件的构建系统)要求指定命令的所有输出,但该文件没有指定,因此当 Tup 检测到该文件已被写入时,它会抱怨。对于 Tup 来说,在这两种情况下创建和写入文件 \xe2\x80\x94 没有区别,它是一个 \xe2\x80\x98output\xe2\x80\x99。因此,Tup 不处理多个命令写入同一文件的情况。这通常会导致缓存出现问题,因为缓存被设计为增量写入。如果我没记错的话,Tup 有一个解决方法,它会忽略路径包含任何带有前导句点的组件的输出文件。在 Linux 环境中,名称以前导句点开头的目录被视为 \xe2\x80\x98hidden\xe2\x80\x99,这与 Windows 不同,在 Windows 中,此功能是通过文件系统属性实现的。因此,对于不依赖此类命名约定的 Windows 本机工具,此解决方法通常会失败。Tup 方面更灵活的解决方案是告诉 Tup 忽略某些输出,无论是在系统或用户基础上还是在 Tupfile 中。
\n\n不可能将此文件列为输出,因为它将成为 CL.EXE(以及可能的其他 Visual Studio 工具)所有调用的输出,并且根据 Tup 的设计,这没有意义。绝对无意为通过同一命令读取和写入的文件腾出空间,因为不可能自动化这种情况。即使仅写入此文件,我认为也无意支持增量写入的输出。
\n\n由于该项目似乎致力于某些平台并为它们提供构建说明,因此指出问题和解决方案似乎是合理的,以便他们可以将其包含在说明中。
\n| 归档时间: |
|
| 查看次数: |
576 次 |
| 最近记录: |