【问题标题】:Using wxWidgets with MinGW, CMake and Code::Blocks将 wxWidgets 与 MinGW、CMake 和 Code::Blocks 一起使用
【发布时间】:2018-06-20 06:06:07
【问题描述】:

我在 CMake 中配置了 wxWidgets,并使用 MinGW-x64 构建了它。在构建二进制文件后,我使用了命令mingw32-make install(在 OpenCV 中使用),它自动安装,文件排列如下所示。

C:\Program Files (x86)\wxWidgets
├───include
│   └───wx
│       ├───android
│       ├───aui
│       ├───dfb
│       ├───generic
│       ├───gtk
│       ├───gtk1
│       ├───html
│       ├───meta
│       ├───motif
│       ├───msw
│       ├───osx
|       |...
└───lib
    └───gcc_dll
        └───mswu
            └───wx

但是安装后,我在Code::Blocks-> Settings-> Compiler -> Search Directories处提供了参数CompilerLinker,但是在编译示例程序时报错,说明程序不规范。

我不知道下一步将库和包含文件与 Code::Blocks 正确关联。我已经用谷歌搜索过了,大多数网络结果在程序中都使用了 makefile.gcc。之后如何在 CodeBlocks 中使用 wxWidgets?

【问题讨论】:

  • 任何错误信息都会有所帮助。

标签: windows cmake codeblocks wxwidgets mingw-w64


【解决方案1】:

请注意,CMake 不是构建 wxWidgets 的官方方式。但是,您可以使用此工具构建自己的软件。 CMake 合并是最近开始的,将在 3.2 版中可用(经过全面测试)。 (希望如此)。

现在我不知道您在 C::B 中收到了哪些错误消息,但是您必须为新项目选择与构建 wxWidgets 所用的选项完全相同的选项。 IE。如果您在 wxWidgets 编译期间提供 SHARED=0,您绝对必须在 C::B 项目中选择 SHARED=0。以此类推。

没有确切的错误消息,您将获得最佳建议。

另外,你没有提到你的 wxWidgets 版本。请在以后这样做,特别是因为您使用的 IDE 不会立即使用最新版本的 wx。

HTH。

【讨论】:

  • SHARED 是一个只有 wxWidgets 的 makefile 才能理解的定义。由于所有 wxWidgets 示例都使用makefile,因此这里需要相同的选项。直接使用编译器不需要这些定义,但其他一些像__WXMSW__
【解决方案2】:

因为每个项目(您已经创建了一个项目,对吗?C::B 需要它)可能需要不同的库和选项,我不喜欢使用“全局”C::B 设置(“工具链可执行文件”除外)。

请转至Project-->Build options。检查“选定的编译器”是否是您想要的。

Compiler settings 选项卡指的是您的编译器 (g++),而不是 wxWidgets 要求。看看旗帜。可能需要其他选项,例如 -mthreads

Linker settings 选项卡适用于所有 Windows .dll,例如 kernel32、user32、winmm 等等。
如果您有不同的目标,例如“debug”和“release”,那么 wxWidgets 库是不同的(“debug”库在每个名称的末尾都有一个d)。因此,您必须为不同的目标添加不同的 wx 库。选择一个目标(左侧的大框)并再次在Linker settings 选项卡中添加这些库(wxmsw31u_core、wxbase31u 等,或者如果您构建了这个而不是多个文件,则只是“大单体”)似乎你只有一个“释放”目标,选择它。

要指示编译器和链接器在哪里可以找到这些 wxWidgets 文件(.dll 或 .a)及其头文件,请使用 Search directories 选项卡。同样,不同的目标使用不同的目录。

编译器搜索.h,在您的情况下添加路径C:\Program Files (x86)\wxWidgets\includeC:\Program Files (x86)\wxWidgets\lib\gcc_dll\mswu

对于链接器(在Linkersub-tab 中)添加C:\Program Files (x86)\wxWidgets\lib\gcc_dll

Resource compiler 子选项卡,对于您的 .res 文件(可能您使用一个)也使用一些 wxWidgets 标头,因此添加相同的 C:\Program Files (x86)\wxWidgets\include


不要忘记 wxWidgets 使用了一些定义。
转到标签Compiler settings 子标签#defines 并添加条目:__GNUWIN32____WXMSW__


更多选项请阅读yourwxdir\docs\msw\install.txt

【讨论】:

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