如何禁用cmake的Visual Studio宏,该宏会在CMakeLists.tx文件更改时提示用户重新加载解决方案

6
由于Visual Studio 2010存在问题,当通过CMake在外部更改时,它无法自动重新加载解决方案。因此,Kitware的工程师制作了此宏来提示您重新加载整个解决方案,而不是像Visual Studio一样为每个项目按reload按钮。但实际上,这并没有达到预期的效果。
在VC 10中,这个宏已经失效并且会进一步影响IDE的使用。我有另一个解决方案可以自动重新加载外部更改的项目/解决方案(VSCommands插件),我希望禁用CMake的宏。有人知道如何实现吗?
2个回答

4

以下是我在LLVM的CMakeLists.txt文件中找到的内容:

# Workaround for MSVS10 to avoid the Dialog Hell
# FIXME: This could be removed with future version of CMake.
if(MSVC_VERSION EQUAL 1600)
  set(LLVM_SLN_FILENAME "${CMAKE_CURRENT_BINARY_DIR}/LLVM.sln")
  if( EXISTS "${LLVM_SLN_FILENAME}" )
    file(APPEND "${LLVM_SLN_FILENAME}" "\n# This should be regenerated!\n")
  endif()
endif()

看起来,这段代码更新了.sln文件并强制Visual Studio一次性重新加载整个解决方案,而不是让你针对每个项目进行选择。


这看起来只是附加一个带有注释“应该被重新生成”的新行,然后是一个新的换行符。 - octi
抱歉,如果这没有帮助到您。对我来说,它会让VS提示我是否要重新加载解决方案的对话框。 - arrowd
在这里使用CMake 3.0.2完美运行。 - Correa

3
要“禁用”运行以提示重新加载解决方案的CMake宏,您可以编辑标记为“DO NOT EDIT THIS MACRO”的宏......

在Visual Studio中,从菜单中选择“工具>宏>宏IDE...”,注释掉CMakeVSMacros2.Macros模块中“ReloadProjects”和“StopBuild”宏的主体,即使CMake调用这些宏,它们也不会产生任何效果。

也许您可以这样做,并尝试在此CMake错误报告中提到的VS插件:http://public.kitware.com/Bug/view.php?id=11258#c27652


我使用VSCommands插件,但需要禁用已损坏的cmake宏。我认为这样就可以解决问题了。谢谢!虽然总体上很好,但是VSaddin无法加载新添加的项目到解决方案中。它只会重新加载现有项目的修改 :/ - octi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接