【问题标题】:How to install wxWidgets with Code::Blocks?如何使用 Code::Blocks 安装 wxWidgets?
【发布时间】:2017-07-04 15:19:37
【问题描述】:

我是 Windows 开发人员,我需要使用 Code::Blocks 开发多平台 C++ GUI 应用程序。

在我第一次尝试做一个简单的“Hello World”应用程序安装 Code::Blocks 和 wxWidgets 后,IDE 显示一个带有 $(#wx)

的框

什么是$(#wx)

谷歌搜索教程我看到了这个

什么是-g

最后出现如下错误提示:

3 天以来,我一遍又一遍地尝试,但没有成功!
我什至尝试wxPack。没有任何效果!

使用 VC++、C++Builder 甚至 wxDev-C++,这很简单
只有 Code::Blocks 太难了!

谷歌搜索,我发现很多人都有同样的错误,但他们得到的建议对我不起作用!

谁能一步一步告诉我我必须做什么?

谢谢。

【问题讨论】:

  • 你是如何构建 wxWidgets 的?您发布的错误消息表明您需要使用库的调试版本,因为您设置了“-g”选项。
  • @Igor,我没有。我下载 wxWidgets 并将安装程序运行到一个目录。因为这不起作用,所以我安装了 wxPack(因为教程说 wxPack 有二进制文件,或者换句话说,它们是预编译的)。
  • 我对 wxPack 一无所知。但是,既然您下载了 wxWidgets 并运行了安装程序……我想您已经在机器上安装了 gcc/MinGW,因为您正在使用 C::B,对吧。然后转到 wxWidgets/build/msw 目录并运行: mingw32 -f makefile.gcc BUILD=Debug 然后尝试构建您的项目。相应调整 MinGW 可执行文件名称。
  • 不可能为每个编译器/版本提供二进制文件。所以你应该先编译库。安装程序仅在您选择的目录中解压缩库的源代码。然后你构建它,只有这样你才能构建和运行你的项目。
  • 然而,奇怪的是公司只请求 C::B 而不是 MSVC。它是本机 Windows 编译器/IDE,可能会生成更好的二进制文件。另外,我建议你从头开始,摆脱 wxPack 并重新下载 wxWidgets。

标签: codeblocks wxwidgets


【解决方案1】:

您的挫败感通常来自您的无知。如果您需要了解 C::B,那么这就是生活。不要把时间浪费在生气上,人生苦短。

代码块不依赖于编译器。您可以使用 VC++、MinGW、TDM-GCC、GCC 等。因此,您必须告诉 C::B 使用的编译器。您可以为不同的“目标”使用不同的编译器(见下文)。

C::B 也不绑定到任何库。如果你想使用 wxWidgets,你必须告诉 C::B 需要的文件以及在哪里可以找到它们。

使用 C::B 的人使用 MinGW 作为编译器是很常见的。这就是为什么当您第一次安装 C::B 时,它会搜索 MinGW,如果找到,则将其设置为默认编译器。您可以在Settings->Compiler 中设置自己的偏好。调试器也是如此,通常是 GDB。

附带说明,请注意 MinGW 只有 32 位。有一个不同的编译器(MinGW 64)。 TDM-GCC 同时提供两种编译器(及其 GDB 版本),我建议将 32/64 版本安装在不同的文件夹中,并将它们设置为 C::B 中的不同编译器。对于 Linux,“母亲”GCC 是事实上的标准。

构建应用时,您必须定义target。这只不过是一种表达“我想要一个 32 位库”或“我想要一个 64 位可执行文件”之类的方式。在您的必需 项目中,您可以设置多个目标。编译前选择所需的(主工具栏中的组合框)。

在开发过程中,最好将目标设置为“调试”。这意味着您要使用调试器。这需要使用“调试符号”。使用 GCC(或其“孩子”之一,MinGW...),您可以完成它,但将 -g 作为标志添加到编译器。

现在您明白了,您可能不仅设置了一个目标,而且还设置了多个目标,例如“发布 64 exe”、“调试 32 exe”等。对吗?

wxWidgets 加入场景

尽管 C::B 是用 wxWidgets 制作的,但它不附带它。从wxWidgets site下载你喜欢的版本。虽然提供了一些二进制文件,但如果您使用一些其他编译器或其他一些参数,那么您需要自己编译 wxWidgets。请参阅docs/msw/install.txt 并了解不同的配置(发布、调试、静态/动态库等)。您的“目标”必须与 wxWidgets 配置匹配,因此最好构建多个版本,与您的目标相同。并且不要忘记为您的应用程序目标使用与每个 wxWidgets 目标相同的参数。您可以通过Project->Build options 进行此操作。

与任何编译器一样,您必须告诉在哪里可以找到库和头文件。以及您要使用的库。 Windows 库(kernel32、user32 等,它们很多,在另一个线程中询问)和 wxWidgets 库。

当您更新您的应用程序时,您可能会使用较新的 wxWidgets 版本,但也希望使用其他 wxWidgets 版本来支持旧版本。你有几个文件夹。对于您的项目,您应该更新所有目录。这可以很快完成吗?是的。在 C::B 中,您可以定义 variables(例如 $wx31dir)并像 $(wx31dir)/include 一样使用它们。重新定义 var 可以节省大量输入。

您可以使用 global var $(#wx31dir) 或多个适合项目的 var。你的决定。

最后,C::B 为 wxWidgets 应用程序提供了一个项目模板。它会询问您一些位置(wx 目录)和变量。如果您不太了解它的作用,最好不要使用它并自行设置所有内容。第一次很难,我知道。来吧,如果你注意所需的步骤,你就会得到它。

你读过CodeBlocks manual吗?

【讨论】:

  • 感谢您的回答。我仍然认为 Code::Blocks 应该与 wxWidgets 捆绑在一起,因为其他 IDE 会这样做。看看拉撒路。我几乎所有平台都有 Lazarus,我下载的 Windows 版本捆绑了 LCL 框架。它唯一的安装和运行,开箱即用。
  • 我还有一个问题:我试了一下Code::Blocks,这次我尝试编译wxWidgets。正如你所料,我得到了很多错误。我可以在这里发布错误还是需要在另一个线程中发布?
  • 编译 wxWidgets 与 C::B 无关。最好使用您用于编译 wx 的命令和一些错误的新线程。请先搜索具有相同错误的类似问题。
【解决方案2】:

由于您很难使用 C::B,我建议您切换到 CodeLite,我发现它比 C::B 更容易开始(我的经验)。您需要的一切都记录在CodeLite Wiki 上。创建项目有很好的截图记录,但在编译之前,打开环境变量 (Settings->Environment Variables) 并添加行 WXWIN=/path/to/your/wxwidgets/installation 并按照那里的说明进行编译。

【讨论】:

    【解决方案3】:

    哎哟.... 您根本不需要与 code::blocks 交互来使用 wxwidgets。 您可以简单地下载 wx 头文件和二进制包(取决于您的编译器),将其放在目录中并将其导入(使用#include)到您的源代码中。 我看不出与 C::B 有什么关系?您可以使用任何库,而无需在编辑器 (IDE) 中编译和设置任何变量 - 但是您缺少很多 feuter。

    【讨论】:

      【解决方案4】:

      我希望 Using wxWidgets Pre Built Binary in CodeBlocks at wxWidgets wiki Using wxWidgets (MSW) 3.0 Binary with Code::Blocks Scripted Wizard 将是您问题的最佳和有用的答案。

      即使我每天都想使用轮子方便,但我不想每天一次又一次地发明轮子。 即使您的问题是关于 MS Windows 的 wxWidgets 和 Code::Blocks,并且答案链接是 wxWidgets 和 Code::Blocks 自己的, For recommended stability, I include the full screenshot of this document of wxWidgets own wiki this of Code::Blocks own wiki

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-30
        • 1970-01-01
        • 1970-01-01
        • 2016-07-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多