如何通过CMake禁用TrackFileAccess?

时间:2018-02-22 00:35:41

标签: cmake msbuild visual-studio-2017

我公司使用CMake管理他们的代码。我的一些同事在Linux上,我在Windows上使用Visual Studio。我们的代码被组织成许多库,在一个解决方案下转换为许多Visual Studio项目。

为了加快编译速度,我尝试将clcache与我的设置集成。为此,我需要为解决方案as noted here中的每个项目禁用TrackFileAccess

因此,根据我的理解,我必须修改CMake文件,要么将一些XML注入每个库的.vcproj文件,要么修改传递给msbuild.exe本身的参数。我在弄清楚如何做这些事情时遇到了很多麻烦。

要尝试使用特定的命令行参数调用msbuild.exe,我找到了变量CMAKE_MAKE_PROGRAM。我尝试将它与SET(CMAKE_MAKE_PROGRAM "${CMAKE_MAKE_PROGRAM} /p:TrackFileAccess=false" CACHE INTERNAL "")一起使用,但我可以从Process Explorer中看到msbuild.exe没有被该参数调用。

我无法弄清楚如何将XML注入.vcproj文件,或者甚至可以使用CMake完成。有没有办法做到这一点?或者我是否需要在CMake运行后编写脚本来编辑其输出?

虽然我们正在使用它,但我是否真的需要编辑每个.vcproj文件,或者我是否可以编辑每个.vcproj将继承的内容?

1 个答案:

答案 0 :(得分:0)

啊哈!

我做了更多挖掘,我想我用CMake咆哮了错误的树。事实证明,我可以编辑C:\ Users \ me \ AppData \ Local \ Microsoft \ MSBuild \ v4.0 \ Microsoft.Cpp.x64.user.props并添加

<PropertyGroup Label="Globals">
    <TrackFileAccess>false</TrackFileAccess>
</PropertyGroup>

它有效!