[cmake-developers] Building with cmake on MSYS/MinGW

Greg Jung gvjung at gmail.com
Sun May 18 04:47:37 EDT 2014


I'm trying to get cmake to build on a MSYS/Mingw system.   "MSYS Makefiles"
generator is used, causing "MSYS" variable to be accessible at the end of
CMakeMSYSFindMake.   Library and include searches into the default
locations do not work because it is presumed -in the scripts that
/usr/local will point somewhere, in fact in MSYS, /usr is (very softly)
"mounted" and file lookups from cmake are mostly unsuccessful (somehow
LDFLAGS and CFLAGS get translated to absolute paths, though).

As it is, cmake on windows doesn't get the "mounting" of /usr and so I try
to substitute the path, using the pre-existing variable
CMAKE_SYSTEM_PREFIX_PATH;  MINGW is in effect and WIN32 also, but we want
to be in MSYS.  From the msys .dll file  (required to be in the $PATH
environment) I find the directory holding now "msys.bat" which then
(/mingw/msys/1.0) i can take as effectively /usr, insert this into the
CMAKE_SYSTEM_PREFIX_PATH variable.
Here is the traced output from the beginning of the test project.
  I wanted to run this by with this expert audience to check if my approach
is correct.
   My big qualm is that I've hijacked a variable but I don't know a way to
make another global variable name with scripts;
it is puzzling that, when I message the path-lists I created in
Platforms/MSYSpaths.cmake, from the
CMakeLists.txt, the semi-colons have disappeared (although variable watch
indicates nothing wants to change them),

C:/MinGW/msys/1.0/home/test/CMakeLists.txt(22):
 cmake_minimum_required(VERSION 2.8 )
C:/MinGW/msys/1.0/home/test/CMakeLists.txt(24):  message( CMAKE_HOST_WIN32
${CMAKE_HOST_WIN32} MSYS? ${MSYS}  )
 CMAKE_HOST_WIN32 1 MSYS?
C:/MinGW/msys/1.0/home/test/CMakeLists.txt(25):  project(test_test C )
C:/MinGW/share/cmake-2.8/Modules/CMakeMSYSFindMake.cmake(17):
 set(CMAKE_HOST_UNIX 1 )
C:/MinGW/share/cmake-2.8/Modules/CMakeMSYSFindMake.cmake(19):
 find_program(CMAKE_MAKE_PROGRAM make )
C:/MinGW/share/cmake-2.8/Modules/CMakeMSYSFindMake.cmake(20):
 mark_as_advanced(CMAKE_MAKE_PROGRAM )
C:/MinGW/share/cmake-2.8/Modules/CMakeMSYSFindMake.cmake(22):
 message(CMAKE_MAKE_PROGRAM: ${CMAKE_MAKE_PROGRAM} )
CMAKE_MAKE_PROGRAM: C:/MinGW/msys/1.0/bin/make.exe
C:/MinGW/share/cmake-2.8/Modules/CMakeMSYSFindMake.cmake(23):
 find_path(_USR_PATH msys-1.0.dll ENV PATH NO_DEFAULT_PATH )
C:/MinGW/share/cmake-2.8/Modules/CMakeMSYSFindMake.cmake(27):
 find_path(CMAKE_USR_PATH msys.bat PATH ${_USR_PATH}/../ NO_DEFAULT_PATH )
C:/MinGW/share/cmake-2.8/Modules/CMakeMSYSFindMake.cmake(31):
 unset(CMAKE_SYSTEM_PREFIX_PATH )
C:/MinGW/share/cmake-2.8/Modules/CMakeMSYSFindMake.cmake(32):
 set(CMAKE_SYSTEM_PREFIX_PATH ${CMAKE_USR_PATH}/local;${CMAKE_USR_PATH} )
C:/MinGW/share/cmake-2.8/Modules/CMakeMSYSFindMake.cmake(33):  message(
CMAKE_SYSTEM_PREFIX_PATH = ${CMAKE_SYSTEM_PREFIX_PATH} <MSYSfindmake> )
 CMAKE_SYSTEM_PREFIX_PATH = C:/MinGW/msys/1.0/local;C:/MinGW/msys/1.0
<MSYSfindmake>
C:/MinGW/share/cmake-2.8/Modules/CMakeDetermineSystem.cmake(47):  message(
CMAKE_HOST_WIN32 ${CMAKE_HOST_WIN32} MSYS? ${MSYS}  )
 CMAKE_HOST_WIN32 1 MSYS? 1
C:/MinGW/share/cmake-2.8/Modules/CMakeDetermineSystem.cmake(48):
 if(CMAKE_HOST_UNIX )
C:/MinGW/share/cmake-2.8/Modules/CMakeDetermineSystem.cmake(49):
 find_program(CMAKE_UNAME uname /bin /usr/bin /usr/local/bin )
C:/MinGW/share/cmake-2.8/Modules/CMakeDetermineSystem.cmake(50):
 if(CMAKE_UNAME )
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake-developers/attachments/20140518/6fec0681/attachment.html>


More information about the cmake-developers mailing list