对于 VS 版本 2008 及更早版本....(除了 VS6,它使用 msdev)
好吧,深入研究cmake,我会说这个知识渊博的人将能够接受并运行它。
我确实发现 CL 和 LINK 命令真的什么也没做,因为这只是启动了 VS2003 到 2008 的 Devenv 和 VS2010 的 MSBuild。将 CL 更改为 NMCL 并不重要,因为 MSBuild 使用目标文件,这就是我的其他答案需要修改用户文件的原因。以及为什么我们需要在这里使用另一个工具。
使用 /Build 调用的 Devenv 在内部使用项目文件来了解需要构建哪些源文件。然后它将在内部调用 createprocess 以根据需要生成 CL 和 LINK。这就是为什么在 cmake 文件中将 CL 更改为 NMCL 是没有用的。
幸运的是,我们还有另一个可以在这里使用的工具......
我们需要更改 //make program CMAKE_MAKE_PROGRAM:FILEPATH=C:/Program Files (x86)/Common Files/Micro Focus/NMShared/CTI/11.1/NMdevenv.EXE
和 CMAKE_BUILD_TOOL:INTERNAL=e:/PROGRA~1/MICROS~2.0/Common7/IDE/devenv.com
到 C:/Program Files (x86)/Common Files/Micro Focus/NMShared/CTI/11.1/NMdevenv.EXE
现在这是需要有更多知识的人的地方。我们还需要将检测类型作为第一个参数传递给 nmdevenv。
我相信它可以做这样的事情
设置(CMAKE_MAKE_PROGRAM "${CMAKE_MAKE_PROGRAM} " /nmon")
这里的另一个问题是我们需要 devenv 也在路径中,因此 Path env 变量也需要正确设置。这可以通过运行正确的 vscvars bat 文件来完成。
希望这会有所帮助,如果您使用的是 vs2008 和以前的版本,请将所需的步骤添加到我从这里开始的内容中。我相信从长远来看它会帮助其他用户。如果我有更多时间对此进行调查,我会找到解决方法。
编辑
好吧,我确实设法让它与 VS2008 一起工作。我确实必须对我们的 nmdevenv 包装器进行更改,因为 cmake 正在破坏我们的 SearchPath 功能。
这就是我所做的。替换了上面的make程序 跑VCVars32 跑cmake --build mytestproj 跑BounsChecker下的程序
现在我切换到传递 /nmtxon 进行性能分析这让我有点难过,因为它一直在为错误检测进行编译
那是我在转换后的项目文件中发现它的时候
<Tool
Name="VCCLCompilerTool"
AdditionalOptions=" /NMbcon /Zm1000"
将其更改为
一切都很好。我有我的性能编译选项。
所以我回去修改CMakeCache.txt文件中的这一行打开GUI,配置,生成//编译器在所有构建类型期间使用的标志。CMAKE_CXX_FLAGS:STRING= /NMbcon /DWIN32 /D_WINDOWS /W3 /Zm1000 /EHsc /GR
然后项目切换回使用/NMbcon。因此,如果您想与我们一起编译所有内容,那么这是放置开关的正确位置。否则使用适当的调试或发布行。
Cmake 输出的一部分 注意输出中的检测
Microsoft (R) Visual Studio Version 9.0.30729.1.
Copyright (C) Microsoft Corp. All rights reserved.
1>------ Build started: Project: Test, Configuration: Debug Win32 ------
1>Compiling...
New Command line nmcl.exe /NMtxon @e:\cust\Test3\Test\Test.dir\Debug\RSP0000011
2568792.rsp /nologo /errorReport:queue
1>Test3.cpp
1>Instrumenting ..\Test3\Test3.cpp
1>Compiling manifest to resources...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.7600.16385
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>Linking...
总之
使用 Cmake 生成 CMakeCache.txt 和目录 修改 CmakeCahe 使用 NMDevenv 作为 MAKE 程序 添加 /NMon 开关到 flags 运行 CmakeGui 并再次生成
运行 VCVars32 运行 cmake --build 文件
在 devpartner 下运行程序