Problem with finding wxWidgets install on windows
The current version of the script file 'Modules/FindwxWidgets.cmake' has an error which prevents it from successfully detecting a wxWidgets installation when using either MXE or MSYS2 to cross-compile an app for windows. I was able to work around this problem by commenting out the following block around line 850-900. I'm pretty sure however this quick hack breaks some features i don't use, and/or might cause problems for other users.
# Check if a specfic version was requested by find_package().
# if(wxWidgets_FOUND)
# find_file(_filename wx/version.h PATHS ${wxWidgets_INCLUDE_DIRS} NO_DEFAULT_PATH)
# dbg_msg("_filename: ${_filename}")
#
# if(NOT _filename)
# message(FATAL_ERROR "wxWidgets wx/version.h file not found in ${wxWidgets_INCLUDE_DIRS}.")
# endif()
#
# file(READ ${_filename} _wx_version_h)
#
# string(REGEX REPLACE "^(.*\n)?#define +wxMAJOR_VERSION +([0-9]+).*"
# "\\2" wxWidgets_VERSION_MAJOR "${_wx_version_h}" )
# string(REGEX REPLACE "^(.*\n)?#define +wxMINOR_VERSION +([0-9]+).*"
# "\\2" wxWidgets_VERSION_MINOR "${_wx_version_h}" )
# string(REGEX REPLACE "^(.*\n)?#define +wxRELEASE_NUMBER +([0-9]+).*"
# "\\2" wxWidgets_VERSION_PATCH "${_wx_version_h}" )
# set(wxWidgets_VERSION_STRING
# "${wxWidgets_VERSION_MAJOR}.${wxWidgets_VERSION_MINOR}.${wxWidgets_VERSION_PATCH}" )
# dbg_msg("wxWidgets_VERSION_STRING: ${wxWidgets_VERSION_STRING}")
# endif()
Output from the 'cmake' command when attempting to create a Makefile:
[pts/18][user@phobos]:/net/deimos/home/user/acu/src/build-mxe$ i686-w64-mingw32.static-cmake -DwxWidgets_CONFIG_EXECUTABLE=/usr/lib/mxe/bin/wx-config ..
== Using MXE wrapper: /usr/lib/mxe/usr/bin/i686-w64-mingw32.static-cmake
== Using MXE toolchain: /usr/lib/mxe/usr/i686-w64-mingw32.static/share/cmake/mxe-conf.cmake
== Using MXE runresult: /usr/lib/mxe/usr/share/cmake/modules/TryRunResults.cmake
loading initial cache file /usr/lib/mxe/usr/share/cmake/modules/TryRunResults.cmake
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/lib/mxe/usr/bin/i686-w64-mingw32.static-gcc
-- Check for working C compiler: /usr/lib/mxe/usr/bin/i686-w64-mingw32.static-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/lib/mxe/usr/bin/i686-w64-mingw32.static-g++
-- Check for working CXX compiler: /usr/lib/mxe/usr/bin/i686-w64-mingw32.static-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- /net/deimos/usr/lib/mxe/usr/x86_64-unknown-linux-gnu/share/cmake-3.5/Modules/FindwxWidgets.cmake(166): wxWidgets_FIND_COMPONENTS : net;adv;core;base
-- /net/deimos/usr/lib/mxe/usr/x86_64-unknown-linux-gnu/share/cmake-3.5/Modules/FindwxWidgets.cmake(166): wxWidgets_SELECT_OPTIONS=--debug=no;--static=yes;--unicode=yes;--universal=no
-- /net/deimos/usr/lib/mxe/usr/x86_64-unknown-linux-gnu/share/cmake-3.5/Modules/FindwxWidgets.cmake(170): wxWidgets_CXX_FLAGS=-I/usr/lib/mxe/lib/wx/include/i686-w64-mingw32.static-msw-unicode-static-3.1;-I/usr/lib/mxe/include/wx-3.1;-D_FILE_OFFSET_BITS=64;-DwxDEBUG_LEVEL=0;-D__WXMSW__;-mthreads
-- /net/deimos/usr/lib/mxe/usr/x86_64-unknown-linux-gnu/share/cmake-3.5/Modules/FindwxWidgets.cmake(170): wxWidgets_DEFINITIONS=_FILE_OFFSET_BITS=64;wxDEBUG_LEVEL=0;__WXMSW__
-- /net/deimos/usr/lib/mxe/usr/x86_64-unknown-linux-gnu/share/cmake-3.5/Modules/FindwxWidgets.cmake(170): wxWidgets_INCLUDE_DIRS=/usr/lib/mxe/lib/wx/include/i686-w64-mingw32.static-msw-unicode-static-3.1;/usr/lib/mxe/include/wx-3.1
-- /net/deimos/usr/lib/mxe/usr/x86_64-unknown-linux-gnu/share/cmake-3.5/Modules/FindwxWidgets.cmake(170): wxWidgets_CXX_FLAGS=-mthreads
-- /net/deimos/usr/lib/mxe/usr/x86_64-unknown-linux-gnu/share/cmake-3.5/Modules/FindwxWidgets.cmake(170): wxWidgets_LIBRARIES=-L/usr/lib/mxe/lib;;;-Wl,--subsystem,windows;-mwindows;/usr/lib/mxe/lib/libwx_baseu_net-3.1.a;/usr/lib/mxe/lib/libwx_mswu_adv-3.1.a;/usr/lib/mxe/lib/libwx_mswu_core-3.1.a;/usr/lib/mxe/lib/libwx_baseu-3.1.a;-lwxregexu-3.1-i686-w64-mingw32.static;-lwxexpat-3.1-i686-w64-mingw32.static;-lwxtiff-3.1-i686-w64-mingw32.static;-lwxjpeg-3.1-i686-w64-mingw32.static;-lwxpng-3.1-i686-w64-mingw32.static;-lz;-lrpcrt4;-loleaut32;-lole32;-luuid;-lwinspool;-lwinmm;-lshell32;-lshlwapi;-lcomctl32;-lcomdlg32;-ladvapi32;-lversion;-lwsock32;-lgdi32
-- /net/deimos/usr/lib/mxe/usr/x86_64-unknown-linux-gnu/share/cmake-3.5/Modules/FindwxWidgets.cmake(170): wxWidgets_LIBRARY_DIRS=/usr/lib/mxe/lib
-- /net/deimos/usr/lib/mxe/usr/x86_64-unknown-linux-gnu/share/cmake-3.5/Modules/FindwxWidgets.cmake(170): _cygpath_exe: _cygpath_exe-NOTFOUND
-- /net/deimos/usr/lib/mxe/usr/x86_64-unknown-linux-gnu/share/cmake-3.5/Modules/FindwxWidgets.cmake(166): _filename: _filename-NOTFOUND
CMake Error at /net/deimos/usr/lib/mxe/usr/x86_64-unknown-linux-gnu/share/cmake-3.5/Modules/FindwxWidgets.cmake:900 (message):
wxWidgets wx/version.h file not found in
/usr/lib/mxe/lib/wx/include/i686-w64-mingw32.static-msw-unicode-static-3.1;/usr/lib/mxe/include/wx-3.1.
Call Stack (most recent call first):
CMakeLists.txt:55 (find_package)
-- Configuring incomplete, errors occurred!
See also "/net/deimos/home/user/acu/src/build-mxe/CMakeFiles/CMakeOutput.log".
However the file does exist:
[pts/18][user@phobos]:/net/deimos/home/user/acu/src/build-mxe$ ls -l /usr/lib/mxe/include/wx*/wx/version.h
-rw-r--r-- 1 user user 3694 Feb 21 01:11 /usr/lib/mxe/include/wx-3.1/wx/version.h
(my server's NFS share is mounted as /net/deimos, and on the desktop machine (phobos) /usr/lib/mxe is a symlink to /net/deimos/usr/lib/mxe)