FindwxWidgets: Resolve Cygwin/MSYS paths to Windows paths

We use `sh wx-config` to launch the `wx-config` tool so that it can run
even on Windows.  Since it is always a shell script its output may use
POSIX paths even on Windows.  Use `cygpath` to convert to Windows paths.
This commit is contained in:
Wayne Stambaugh 2016-02-14 20:51:11 +01:00 committed by Brad King
parent 8dfb6f8b37
commit bf643286d3
1 changed files with 30 additions and 0 deletions

View File

@ -835,6 +835,36 @@ else()
endif()
endif()
# When using wx-config in MSYS, the include paths are UNIX style paths which may or may
# not work correctly depending on you MSYS/MinGW configuration. CMake expects native
# paths internally.
if(wxWidgets_FOUND AND MSYS)
find_program(_cygpath_exe cygpath ONLY_CMAKE_FIND_ROOT_PATH)
DBG_MSG_V("_cygpath_exe: ${_cygpath_exe}")
if(_cygpath_exe)
set(_tmp_path "")
foreach(_path ${wxWidgets_INCLUDE_DIRS})
execute_process(
COMMAND cygpath -w ${_path}
OUTPUT_VARIABLE _native_path
RESULT_VARIABLE _retv
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)
if(_retv EQUAL 0)
file(TO_CMAKE_PATH ${_native_path} _native_path)
DBG_MSG_V("Path ${_path} converted to ${_native_path}")
set(_tmp_path "${_tmp_path} ${_native_path}")
endif()
endforeach()
DBG_MSG("Setting wxWidgets_INCLUDE_DIRS = ${_tmp_path}")
set(wxWidgets_INCLUDE_DIRS ${_tmp_path})
separate_arguments(wxWidgets_INCLUDE_DIRS)
list(REMOVE_ITEM wxWidgets_INCLUDE_DIRS "")
endif()
unset(_cygpath_exe CACHE)
endif()
#=====================================================================
# Neither UNIX_FIND_STYLE, nor WIN32_FIND_STYLE
#=====================================================================