!在这里清除答案! Eclipse + wxWidgets3.1.3 + MinGW

问题描述 投票:0回答:2
  • wxWidgets-3.1.3
  • Eclipse IDE 4.14.0
  • Eclipse CDT 9.10.0.2019x(截至2020年2月2日的最新软件包)
  • MinGW编译器,通过MSYS2安装
  • Windows 10专业版

我多年来一直将Eclipse用于PHP,Python,JavaScript和lua。但是,我是C ++和Eclipse CDT的新手。我对C ++语法和约定已经有了足够的把握,因此我可以继续介绍我来到C ++(即GUI)的原因。最初,我尝试了Code :: Blocks,这似乎更简单(我喜欢向导!),但是我确实更喜欢具有git集成的IDE,并且我意识到C :: B在设法使编译工作之前没有该功能。因此,回到Eclipse。

到目前为止,我已经完成了以下操作:

  • 将MinGW编译器路径添加到%PATH%
  • 使用SHARED = 0 UNICODE = 1 MONOLITHIC = 0 BUILD = release成功编译的wxWidgets 3.1.3,这些更改在%WXDIR%\ build \ msw \ config.gcc中进行。我发现的各种教程在这些参数上都存在很大的分歧,但是在这里和其他论坛上针对我的问题的人们的各种回应都普遍对此表示同意,除了BUILD以外,它们都是默认设置。所以。
  • 成功地从样本/最小编译了一个测试程序。生成的可执行文件无需在同一目录中运行任何其他DLL即可运行。

不幸的是,这就是我被困住的地方。有很多教程和论坛帖子,但是我遇到以下一个或多个问题:

  • 无法访问新手。 “将链接添加到您的wxWidgets目录”,但是好吧,我该怎么做,您的意思是主要%WXDIR%代码目录或%WXDIR%\ lib还是什么?
  • 不工作。 “仅文件->导入->文件系统->%WXDIR%”,然后否。实际上,确实摆脱了“ minimal.cpp”粘贴的代码中某些引用的“未解析”,但不是全部。
  • 明确地引用十年前的IDE或代码版本,和/或包含当前版本中无法遵循的说明。

或者,我会推荐另一个GUI工具箱,该工具箱具有可访问的说明,以使其自身的当前版本与Eclipse的当前版本一起使用。

wxwidgets eclipse-cdt
2个回答
0
投票

我将展示如何使用MinGW和Eclipse编译wxWidgets最小样本。首先,我强烈建议您同时构建wxWidgets库的调试版本和发行版本。这些指示将假定是这种情况。我不是蚀专家,所以我不能保证这些都是最好的方向。这些指示确实对我有用,但是欢迎进行更正和改进。

这里有很多很多步骤。但是,如果您得到的工作项目样本最少,则可以复制该项目并更改代码文件以将其用于其他项目。

在执行其他任何操作之前,请在eclipse中定义WXWIN环境变量(如果尚未定义)。从菜单中选择Window-> Preferences-> C / C ++-> Build-> Environment,然后按添加按钮以添加变量。

enter image description here

构建库随附的最小样本的最简单方法是使用命令行。为此,只需转到WXWIN \ samples \ minimal文件夹,然后输入用于构建库的命令即可。由于上面给出的命令是mingw32-make -f makefile.gcc SHARED=0 UNICODE=1 MONOLITHIC=0 BUILD=release,因此如果在Shell中执行以下命令,则会导致此结果:

windres --use-temp-file -i../../samples/sample.rc -ogcc_mswu\minimal_sample_rc.o    --define __WXMSW__   --define NDEBUG    --define _UNICODE --include-dir .\..\..\lib\gcc_lib\mswu --include-dir ./../../include  --include-dir .  --include-dir ./../../samples --define NOPCH
g++ -c -o gcc_mswu\minimal_minimal.o  -O2 -mthreads  -DHAVE_W32API_H -D__WXMSW__   -DNDEBUG    -D_UNICODE -I.\..\..\lib\gcc_lib\mswu -I.\..\..\include  -W -Wall -I.  -I.\..\..\samples -DNOPCH   -Wno-ctor-dtor-privacy   -MTgcc_mswu\minimal_minimal.o -MFgcc_mswu\minimal_minimal.o.d -MD -MP minimal.cpp
g++ -o gcc_mswu\minimal.exe @gcc_mswu\minimal.exe.rsp   -mthreads -L.\..\..\lib\gcc_lib -Wl,--subsystem,windows -mwindows    -lwxmsw31u_core  -lwxbase31u    -lwxtiff -lwxjpeg -lwxpng   -lwxzlib -lwxregexu -lwxexpat   -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lshlwapi -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lversion -lwsock32 -lwininet -loleacc -luxtheme

如果我们用build=debug执行相同的命令,我们将得到相似的命令,只是有一些区别:

windres --use-temp-file -i../../samples/sample.rc -ogcc_mswud\minimal_sample_rc.o    --define __WXMSW__       --define _UNICODE --include-dir .\..\..\lib\gcc_lib\mswud --include-dir ./../../include  --include-dir .  --include-dir ./../../samples --define NOPCH
g++ -c -o gcc_mswud\minimal_minimal.o -g -O0 -mthreads  -DHAVE_W32API_H -D__WXMSW__       -D_UNICODE -I.\..\..\lib\gcc_lib\mswud -I.\..\..\include  -W -Wall -I.  -I.\..\..\samples -DNOPCH   -Wno-ctor-dtor-privacy   -MTgcc_mswud\minimal_minimal.o -MFgcc_mswud\minimal_minimal.o.d -MD -MP minimal.cpp
g++ -o gcc_mswud\minimal.exe @gcc_mswud\minimal.exe.rsp  -g -mthreads -L.\..\..\lib\gcc_lib -Wl,--subsystem,windows -mwindows    -lwxmsw31ud_core  -lwxbase31ud    -lwxtiffd -lwxjpegd -lwxpngd   -lwxzlibd -lwxregexud -lwxexpatd   -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lshlwapi -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lversion -lwsock32 -lwininet -loleacc -luxtheme

要使用eclipse构建示例,我们希望使其执行大致相同的命令,这考虑到调试和发布配置之间的细微差异。选择文件->新建-> C / C ++项目-> C ++托管版本。输入项目名称,选择MinGW GCC,确保项目类型为“可执行/空项目”,然后单击“完成”按钮。

enter image description here

现在将文件添加到项目中。您可以

  1. 选择文件->新建->源文件,输入文件名,例如“ minimal.cpp”或您要调用的名称,然后单击完成。新文件将自动在eclipse中打开。选择并删除全部内容。在文本编辑器中,打开文件WXWIN \ samples \ minimal \ minimal.cpp,选择并复制整个内容,粘贴到刚刚在eclipse中创建的文件中,然后保存文件。
  2. 文件->导入->常规->文件系统。单击下一步。然后为目录选择\ samples \ minimal。然后从显示的文件列表中选择文件minimal.cpp。最后点击完成按钮。

两种方法中,现在项目中都应该有一个名为minimal.cpp的文件。要构建此文件,需要更改几个设置。从菜单中,选择项目->属性-> C / C ++构建->设置

  • 对于GCC C ++编译器:

    • 对于预处理器,
      • 对于所有配置,请添加__WXMSW___UNICODEHAVE_W32API_HNOPCH
      • 对于发行版配置,请添加NDEBUGenter image description here
    • 对于包括
      • 对于所有配置,请添加${WXWIN}\include
      • 对于调试配置,添加${WXWIN}\lib\gcc_lib\mswud
      • 对于发行版配置,请添加${WXWIN}\lib\gcc_lib\mswu
    • 为了优化
      • 对于发行配置,请选择Optimize more (-O2)
    • 用于调试
      • 对于调试配置,选择调试级别Default (-g)
    • 对于其他
      • 对于所有配置,在“其他标志”框的末尾添加-mthreads -W -Wno-ctor-dtor-privacy
  • 对于MinGW C ++链接器:

    • 对于图书馆,
      • 对于调试配置:
        • 对于库,添加wxmsw31ud_corewxbase31udwxtiffdwxjpegdwxpngdwxzlibdwxregexudwxexpatd
      • 对于发行版配置:
        • 对于库,添加以下所有内容:wxmsw31u_corewxbase31uwxtiffwxjpegwxpngwxzlibwxregexuwxexpat
      • 对于所有配置
        • 对于库,请添加以下所有内容:kernel32user32gdi32comdlg32winspoolwinmmshell32shlwapicomctl32ole32oleaut32uuidrpcrt4advapi32versionwsock32wininetoleaccuxtheme
        • 对于库搜索路径,添加${WXWIN}\lib\gcc_lib
      • note:在MinGW中,库的顺序有时很重要,在调试和发行版配置中使用名称以“ wx”开头的库应首先列出。如有必要,您可以使用向上和向下箭头重新排列顺序。enter image description here
    • 对于脏话,
      • 对于所有配置
        • 对于喜欢者标志,添加-mthreads -mwindows
        • 对于其他选项(-Xlinker),添加--subsystem=windows
      • 对于调试配置,
        • 对于喜欢者标志,将-g添加到现有内容。

现在将同时构建调试和发布配置,但是该应用程序尚未完成。在命令提示符下构建最小应用程序的第一件事是

windres --use-temp-file ...

根据this link,eclipse仅不支持构建资源文件,因此我们需要手动处理。

  1. 将文件WXWIN \ samples \ sample.rc和WXWIN \ samples \ sample.ico复制到项目文件夹中。 (项目文件夹是包含之前创建的minimal.cpp文件的文件夹)。或者,您可以使用File-> Import-> ...将文件导入到项目中。
  2. 现在返回项目->属性-> C / C ++构建->设置->构建步骤。

    • 对于预构建步骤
      • 对于调试配置,请输入windres --use-temp-file -i"${ProjDirPath}/sample.rc" -o"${CWD}\minimal_sample_rc.o" --define __WXMSW__ --define _UNICODE --include-dir ${WXWIN}\lib\gcc_lib\mswud --include-dir ${WXWIN}\include --define NOPCH
      • 对于发布配置,请输入windres --use-temp-file -i"${ProjDirPath}\sample.rc" -o${CWD}\minimal_sample_rc.o --define __WXMSW__ --define NDEBUG --define _UNICODE --include-dir ${WXWIN}\lib\gcc_lib\mswu --include-dir ${WXWIN}\include --define NOPCHenter image description here
  3. 下一次切换回工具设置标签:

    • 对于MinGW C ++链接器:
      • 对于其他,
        • 对于所有配置
          • 对于其他对象,添加${CWD}\minimal_sample_rc.oenter image description here

这两个额外的步骤将使eclipse编译资源文件并将资源链接到最终的可执行文件中。


0
投票

所以您从一个全新的C ++项目开始。

然后您在其中添加源代码以获取最少的示例。

接下来打开项目属性,打开“ C ++ Build”->“设置”,然后在“ C ++ Compiler”->“ Directory”下,添加所有包含目录。

然后转到“ C ++链接器”->“库”,然后添加库和它们的路径。

让我们知道您是否还有问题吗?

© www.soinside.com 2019 - 2024. All rights reserved.