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". Какой из них вы используете?