使用cmake将与msys 2一起安装的wxWidgets(3.1.1)包含到我们的项目中

时间:2018-04-19 12:18:47

标签: cmake wxwidgets clion msys2

我们正试图在我们的项目中包含并生成wxWidgets。 我们正在使用CMake编译并将我们的库包含在msys2中。我们使用CLion作为IDE。经过几天的测试,我们仍无法让它运行。有很多不同的错误可以发布所有错误。 我想我们已经尝试了你能做的一切,阅读你可以阅读的所有内容,但它仍然无法工作。

我们还尝试安装整个wxWidget.zip文件夹并按路径实现所有内容,但仍然没有。

有一些关于此问题的帖子,但似乎没有任何效果。

我的问题是,是否有人遇到过同样的问题并修复了?是否有分步指南正确实施所有内容?

提前致谢!

1 个答案:

答案 0 :(得分:1)

由于当前msys2版本的wxwidgets无法正常工作(FindCMake文件无效+ +包含的文件夹名称不同于wxWidgets主页上的文档),我建议采用以下解决方法:

  1. Download wxWidgets并将其解压缩到您选择的目录中。
  2. 运行CLion(并按以下方式构建wxWidgets):
    • 关闭所有打开的项目并执行Import Projetct from Sources
    • 选择您将wxWidgets解压缩到的目录。
    • 选择Use existing CMakeLists.txt
    • CMake完成加载后 - 构建项目( Ctrl + F9 )。我建议使用发布模式。
  3. 在CLion中构建wxWidgets之后,有一个名为'cmake-build-release'或'cmake-build-debug'的新文件夹。如果您想集成项目中内置的wxWidgets,我建议:
    • 将所有.a - 文件从/ lib / gcc_dll /复制到新的项目文件夹,
    • 将/ lib / gcc_dll /中的所有.dll个文件复制到项目构建文件夹
    • 将原始wxWidgets存档中的include文件夹复制到您的项目中,无论如何也将setup.h从/ lib / gcc_dll / mswud / wx /复制到include文件夹中。
  4. 编辑项目的CMakeLists.txt:
    • include_directories添加wxWidgets include文件夹的路径
    • target_link_libraries添加每个 .a文件的路径。
  5. 在我的情况下,第4点产生以下几行以使其清晰:

    include_directories(
            ${CMAKE_CURRENT_SOURCE_DIR}/cpp/libs/wx_headers/include
            )
    

    target_link_libraries(example_project
            ${CMAKE_CURRENT_SOURCE_DIR}/cpp/libs/wx_build/libwxbase31u.a
            ${CMAKE_CURRENT_SOURCE_DIR}/cpp/libs/wx_build/libwxbase31u_net.a
            ${CMAKE_CURRENT_SOURCE_DIR}/cpp/libs/wx_build/libwxbase31u_xml.a
            ${CMAKE_CURRENT_SOURCE_DIR}/cpp/libs/wx_build/libwxexpat.a
            ${CMAKE_CURRENT_SOURCE_DIR}/cpp/libs/wx_build/libwxjpeg.a
            ${CMAKE_CURRENT_SOURCE_DIR}/cpp/libs/wx_build/libwxmsw31u_adv.a
            ${CMAKE_CURRENT_SOURCE_DIR}/cpp/libs/wx_build/libwxmsw31u_aui.a
            ${CMAKE_CURRENT_SOURCE_DIR}/cpp/libs/wx_build/libwxmsw31u_core.a
            ${CMAKE_CURRENT_SOURCE_DIR}/cpp/libs/wx_build/libwxmsw31u_gl.a
            ${CMAKE_CURRENT_SOURCE_DIR}/cpp/libs/wx_build/libwxmsw31u_html.a
            ${CMAKE_CURRENT_SOURCE_DIR}/cpp/libs/wx_build/libwxmsw31u_media.a
            ${CMAKE_CURRENT_SOURCE_DIR}/cpp/libs/wx_build/libwxmsw31u_propgrid.a
            ${CMAKE_CURRENT_SOURCE_DIR}/cpp/libs/wx_build/libwxmsw31u_qa.a
            ${CMAKE_CURRENT_SOURCE_DIR}/cpp/libs/wx_build/libwxmsw31u_ribbon.a
            ${CMAKE_CURRENT_SOURCE_DIR}/cpp/libs/wx_build/libwxmsw31u_richtext.a
            ${CMAKE_CURRENT_SOURCE_DIR}/cpp/libs/wx_build/libwxmsw31u_stc.a
            ${CMAKE_CURRENT_SOURCE_DIR}/cpp/libs/wx_build/libwxmsw31u_webview.a
            ${CMAKE_CURRENT_SOURCE_DIR}/cpp/libs/wx_build/libwxmsw31u_xrc.a
            ${CMAKE_CURRENT_SOURCE_DIR}/cpp/libs/wx_build/libwxpng.a
            ${CMAKE_CURRENT_SOURCE_DIR}/cpp/libs/wx_build/libwxregexu.a
            ${CMAKE_CURRENT_SOURCE_DIR}/cpp/libs/wx_build/libwxscintilla.a
            ${CMAKE_CURRENT_SOURCE_DIR}/cpp/libs/wx_build/libwxtiff.a
            ${CMAKE_CURRENT_SOURCE_DIR}/cpp/libs/wx_build/libwxzlib.a
    )
    

    声明:

    你应该知道,包括那些库的库被认为是不好的做法,一旦MSYS2提供了一个wxWidgets库和一个工作find_package - 文件,请改用它!