【发布时间】:2017-07-26 04:55:22
【问题描述】:
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 应该为我处理它。
当我的可执行文件来自 cmake 项目时,如何让 Visual Studio 控制台在我的可执行文件完成后不关闭?
我正在使用 Microsoft Visual Studio Community 2017,版本 15.2 (26430.16) 发布
【问题讨论】:
-
launch.vs.json 有一个
"stopOnEntry": true,它在main()的入口处中断。太糟糕了,它没有类似"stopOnExit"... -
如何构建项目,然后直接从控制台启动构建的可执行文件?
-
@Scheff 这是可以做到的,就像在 main 函数的末尾设置断点一样。但是,这并不能解决这个问题; Visual Studio 为普通项目内置了它。我想要这种行为。
-
这引起了我的注意,因为您准确地描述了我们通常在 VS2013 中的工作方式(没有问题)。主要区别在于 VS2013 没有内置对 CMake 的支持(除了我们自己的自制软件)。因此,我们总是生成项目和解决方案文件。可以轻松更改项目/解决方案的属性(直到下一次 CMake 运行将覆盖它)。 CMake/VS2017 是否有此选项(即忽略内置支持)? (我试图用谷歌搜索,但只发现 CMake 现在已集成到 VS2017 中的“一千个”链接......)
-
@FlorianWolters 我从来没有真正解决过这个问题;我最终离开了 VS 并使用命令行调用 cmake。
标签: c++ visual-studio visual-studio-2017