需要构建没有条件编译的GUI 最近我一直在寻找我应该用什么来构建一个C++的GUI应用程序,发现WXWIDGET和QT最近大部分都被使用,但是IE阅读QT有机会在不久的将来占主导地位,因此我希望很多人从来没有使用过它,但我想知道为什么它变得如此流行。但是,我不知道它是否能满足我的要求

需要构建没有条件编译的GUI 最近我一直在寻找我应该用什么来构建一个C++的GUI应用程序,发现WXWIDGET和QT最近大部分都被使用,但是IE阅读QT有机会在不久的将来占主导地位,因此我希望很多人从来没有使用过它,但我想知道为什么它变得如此流行。但是,我不知道它是否能满足我的要求,c++,qt,user-interface,cmake,wxwidgets,C++,Qt,User Interface,Cmake,Wxwidgets,我们的目标是确保我们的软件既可以在Windows上运行,也可以在Linux上运行,而不需要复杂的配置(比如安装MinGW只是为了运行我的应用程序),并且可以在这两个平台上编译,而无需任何条件编译。我必须坚持“无条件编译”规则 我想知道CMake是否能解决所有这些问题,无论我是使用wxWidgets还是QT。对于我的项目,我倾向于在Linux和Windows上使用wxWidgets(我需要GUI的地方)。对于windows,我使用wxWidgets作为静态编译的工具链(或我使用的任何其他库) 因此

我们的目标是确保我们的软件既可以在Windows上运行,也可以在Linux上运行,而不需要复杂的配置(比如安装MinGW只是为了运行我的应用程序),并且可以在这两个平台上编译,而无需任何条件编译。我必须坚持“无条件编译”规则


我想知道CMake是否能解决所有这些问题,无论我是使用wxWidgets还是QT。

对于我的项目,我倾向于在Linux和Windows上使用wxWidgets(我需要GUI的地方)。对于windows,我使用wxWidgets作为静态编译的工具链(或我使用的任何其他库)

因此,当我为windows平台发布新版本时,我不需要担心最终用户的依赖关系,因为这是在可执行文件中静态链接的。当然,动态链接也可以做到这一点,但将所有内容链接到应用程序中并不那么痛苦。Windows版本通常通过Code::Blocks生成,但也可以通过Windows上的makefile(使用mingw-w64)轻松完成


在Linux上,我通常只在新版本上交付源代码。在Linux上,我使用一个简单的makefile。

我只能回答CMake和Qt的情况。如果您将Qt与CMake一起使用,则可以构建适用于Windows和Linux的可执行文件,而无需更改一行代码,也无需使用条件代码

这也是Qt占据主导地位的原因。它只需节省大量时间,因为您只需编写一次所有代码,并且只需在不同平台上编译相同的源代码


此外,代码保持非常干净,因为在Windows和Linux之间构建不同的代码不需要任何“宏魔法”。

您对“无条件编译”的理解是什么?代码中没有
#ifdef
,或者Cmake中没有条件选择文件?Cmake+Qt将很好地满足您的条件。wxWidgets不需要额外的软件来运行,因为它是在任何平台上使用此平台的本机API调用实现的。关于“无条件编译”-你真的需要解释一下你的意思。无条件编译意味着确保软件在linux和windows中运行,而不需要安装其他复杂的东西。我刚才两次提到了目标,以强调我需要什么。我只是认为QT可能很复杂,但它似乎工作得很好,值得使用。多亏了使用QT构建软件,您需要安装一个完整的QT开发包。一旦你这样做了,建筑就会执行两个命令:
qmake
,后面跟着
make
。没有比这更简单的了。您甚至不需要首先使用cmake
qmake
是Qt的一部分。OP询问CMake是否可以为Qt或wxWidgets的不同平台处理不同的配置。此外,OP似乎不喜欢为项目安装另一个编译器(mingw)。也许你可以从这些方面扩展这个答案。事实上,,这与其说是一个答案,不如说是一个观点。谢谢你的回答。我只是想知道QT是否灵活使用,似乎是这样,我现在就尝试使用它。问题是我的合作伙伴有时在他的linux平台上编写代码,如果使用QT意味着我们可以在windows和linux上轻松编写代码,而不需要更改代码,那听起来很棒!应该是这样。你唯一需要关心的是:A)Qt库本身。在Windows和Linux上,您都必须使用相同的选项和模块构建库。当然,为了确保您的代码是可移植的,您不能使用任何特定于平台的API(例如Windows API)。对于几乎所有的事情,都应该使用qtapi,而不是特定于平台的API。因此,Qt文档非常棒,因此您可以在那里找到所需的一切。