CMake: найти wxWidgets, созданные с помощью MinGW/MSYS?

Я скомпилировал wxWidgets 2.8.12, используя MinGW. Чтобы фактически выполнить сборку, я вызвал файлы сборки autotools, распространяемые с помощью wxWidgets через оболочку MSYS, используя префикс установки H:\MinGW-libs.

В результате у меня есть дерево файлов в стиле Unix, содержащее мои заголовки и библиотеки wxWidgets (файлы.a, а не.dll) с корневым каталогом H:\MinGW-libs.

Моя проблема в том, что я не могу заставить CMake найти файлы. Когда я пытаюсь использовать кнопку "настроить" в графическом интерфейсе CMake, он находит другие зависимости (а именно, boost, для которых мне пришлось указать BOOST_ROOT, но он не находит wxWidgets. Я вижу, что wxWidgets_ROOT_DIR - это доступная константа, которую я могу установить, но ни один из очевидных вариантов

H:\MinGW-libs (мой префикс установки для wxWidgets)

H:\MinGW-libs\lib

H:\MinGW-libs\include

исправить ошибку.

В списке рассылки CMake есть старая запись об этой проблеме, но на самом деле нет никакой информации, указывающей, как это исправить в этом случае использования. Единственный совет, который у меня есть, заключается в том, что есть разница между поиском wxWidgets в деревьях файлов "Unix style" и в файлах "Windows style".

Как я могу заставить CMake найти wxWidgets, установленные в дереве файлов стиля Unix на Windows 7? Есть ли способ заставить CMake использовать wx-config? Я спрашиваю об этом, потому что из командной строки MSYS, используя wx-config, чтобы получить lib и расположение заголовков, работает просто отлично.

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()

Таким образом, дерево в стиле Unix предполагается для генератора "MSYS Makefiles" (cmake -G "MSYS Makefiles") но не для генератора "MinGW Makefiles". Какой из них вы используете?

Другие вопросы по тегам