从在Visual Studio 2017年cmake的项目关防止控制台窗口

问题描述 投票:12回答:2

Visual Studio的2017年已经内置了支持cmake的项目,这意味着你可以打开包含的CMakeLists.txt的文件夹,并使用它。然而,似乎没有要到prevent the console window from closing after running an executable的方式。

与正常的Visual Studio项目,您可以使用Ctrl + F5键没有附加调试器中运行。但是,按Ctrl + F5确实做到了同样的事情,F5,也就是说,它运行可执行文件,并立即关闭控制台窗口。

另一项建议是设置子系统“控制台”的应用程序,但CMake的项目有,我可以设置设置没有Visual Studio项目。

我想也许我可以去调试和启动设置为我的CMakeLists.txt(右键单击>调试和启动设置> target.exe),由此拉开launch.vs.json。不幸的是,我无法找到这个文件。通过翻翻模式,但是,它好像我可以设置"noDebug": true,但这只是关掉调试器,什么也没做,从收盘停止控制台:

{
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "default",
      "project": "CMakeLists.txt",
      "projectTarget": "target.exe",
      "name": "target.exe",
      "noDebug": true
    }
  ]
}

这是推动我疯了。我不能只是添加system("pause")的主要功能,因为我使用了一个测试框架提供的主要功能。此外,这应该是完全没有必要的; Visual Studio中应处理好对我来说。

我怎样才能使Visual Studio的控制台无法接近后,我的可执行程序完成后,当我的可执行文件是从cmake的项目?

我使用Microsoft Visual Studio 2017年的社区,15.2版本(26430.16)发布

c++ visual-studio visual-studio-2017
2个回答
2
投票

这是在Visual Studio 2017年的CMake支持bug。它在VS 2019中得到解决。

作为暂时的解决办法,在应用程序退出添加断点,并与(F5)调试运行:

  1. 按Ctrl + B(新建断点)
  2. 输入函数名称:exit
  3. 按OK

现在,如果你运行项目(F5)main()返回后,调试器将停止。

要删除断点,去断点视图(按Ctrl + Alt + B),并从那里删除它。


-1
投票

过这种情况最近来了,因为我们有时使用标准输出在我们的UI应用程序的调试信息,我们需要把我们的开发机器在控制台窗口中,但在我们的CI建设把它的。

在你的CMakeLists.txt必须是一个“add_executable”语句,就像这样:

add_executable(project_name WIN32 ${your_source_files})

如果您ommit的WIN32,CMake的将改变子系统“控制台”,这导致Visual Studio来保持控制台窗口打开时,应用程序退出。

© www.soinside.com 2019 - 2024. All rights reserved.