【问题标题】:CMake: find wxWidgets built with MinGW/MSYS?CMake:找到用 MinGW/MSYS 构建的 wxWidgets?
【发布时间】:2013-08-28 07:17:43
【问题描述】:

我使用 MinGW 编译了 wxWidgets 2.8.12。为了实际进行构建,我通过 MSYS shell 调用了与 wxWidgets 一起分发的 autotools 构建文件,使用了 H:\MinGW-libs 的安装前缀。

这样做的结果是我有一个 Unix 样式的文件树,其中包含我的 wxWidgets 标头和库(它们是 .a 文件,而不是 .dll),根目录为 H:\MinGW-libs。

我的问题是我无法让 CMake 找到文件。当我尝试使用 CMake gui 中的“配置”按钮时,它会找到其他依赖项(即 boost,我必须为此指定 BOOST_ROOT,但它没有找到 wxWidgets。我看到 wxWidgets_ROOT_DIR 是一个可用的常量,我可以设置但没有明显的选择

H:\MinGW-libs(我的 wxWidgets 安装前缀)

H:\MinGW-libs\lib

H:\MinGW-libs\include

修正错误。

有一个关于这个问题的old post on the CMake mailing list,但实际上没有任何信息表明如何在这个用例中修复它。我得到的唯一提示是,在“Unix 风格”文件树和“Windows 风格”文件树中寻找 wxWidget 是有区别的。

如何让 CMake 在 Windows 7 上找到安装在 Unix 样式文件树中的 wxWidgets?有没有办法让 CMake 使用 wx-config?我问这个是因为从 MSYS 命令行使用 wx-config 获取 lib 和标头位置工作得很好。

【问题讨论】:

  • 你的库没有生成到C:/wxWidgets/lib/gcc_lib ?
  • 实际上是的,但是在构建库之后,我将它们“安装”到 H:\MinGW-libs 中。为什么要问这个?

标签: cmake mingw wxwidgets msys


【解决方案1】:

来自FindwxWidgets.cmake

if(WIN32 AND NOT CYGWIN AND NOT MSYS)
  set(wxWidgets_FIND_STYLE "win32")
else()
  if(UNIX OR MSYS)
    set(wxWidgets_FIND_STYLE "unix")
  endif()
endif()

因此,“MSYS Makefiles”生成器 (cmake -G "MSYS Makefiles") 假定为 Unix 样式树,但“MinGW Makefiles”生成器不假定为 Unix 样式树。 你用的是哪一种?

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多