在Qt Creator和CMake中显示命令提示符

3

涉及的开发环境包括:

  • Windows 7
  • MinGW (g++)
  • CMake
  • Qt Creator

问题在于,Qt Creator是一款不错的IDE,但似乎无法显示程序的命令行输出。它似乎有自己的专有调试窗格,但它并没有给我提供例如运行时错误之类的信息。它只告诉我程序已失败,并给出退出代码。我仅使用Creator作为C++的能力,不以任何方式使用Qt,因此专有窗格对我来说是无用的。

所以我问这个问题:能做些什么吗?我是不是错过了什么非常明显的东西,比如内置的命令行?或者,如果不行,我至少可以使用一些肮脏和/或令人厌恶的黑客方法,在运行程序时让它显示Windows命令提示符吗?

最后一件事;我确实进行了一些研究,并找到了一种编辑Qt项目文件以显示提示符的方法,但...我正在使用CMake,而不是Qt项目。所以那不能回答我的问题。如果我可以在CMakeLists.txt中做类似的事情,那就太好了。但Google在这方面让我失望了,所以我不抱太大希望。

编辑:

我特别担心运行时错误。 coutprintf 会被重定向到Qt Creator的窗口,所以这没问题。除非调试器捕获了它们,否则我不会得到运行时错误,而这种情况发生的频率并不理想。

1个回答

1

Windows GUI程序没有标准输出。

在Windows中,标准运行时有两个可能的入口点。控制台和窗口。控制台会从父进程继承控制台窗口或创建一个新的控制台窗口并将标准输入/输出/错误流连接到它,而窗口则不会连接它们,除非由调用进程明确重定向。Qt应用程序是(可能是;您可以拥有控制台Qt-Core应用程序)GUI应用程序,而Qt Creator(或任何其他Windows IDE)不会明确重定向输出。因此,标准输出根本没有打开,写入被丢弃。

然而,Windows有用于调试目的的单独日志记录设施。这就是您在调试窗口中看到的内容。您可以使用本机OutputDebugString API将其写入。我相信您也可以将Qt调试日志定向到那里。

请注意,当它告诉您程序已经以状态0退出时,这意味着程序已运行,这反过来又意味着它已经成功编译,并且从g++没有出现错误。可能会有警告,如果有的话,您应该在适当的其他窗口中看到它们。编译器输出和程序输出是不同的事情;IDE确实读取编译器输出。

是的,我在我的问题中忽略了一些东西。但它仍然有效。我的意思不是使用Qt Creator制作GUI程序。目前,由于我只是尝试Creator,所以我正在做简单的控制台程序。如果程序执行正确,一切都很好。如果编译器有错误,正如你指出的那样,Creator会向我显示。但是,如果有运行时错误,在Visual Studio中,消息将只显示在控制台中,我什么也看不到。有一个调试模式还可以,但它不能捕获所有内容,有时我只能得到“它崩溃了”的信息。 - bpunsky
嗯, Visual Studio 会弹出控制台,但当程序结束时它会消失,所以它并不是很有帮助。我不知道是否可以重定向它,很遗憾 :-(。 - Jan Hudec

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