[CMake] Problem with GNU compilers - difference between "Windows" and "MinGW"

Alan W. Irwin irwin at beluga.phys.uvic.ca
Thu Sep 23 12:34:44 EDT 2010


I would definitely like the build system for the FreeEOS software
project to work properly on Windows.  I have no access to that
platform so I was very happy that Arjen was willing to test that build
on Windows for me. However, he cannot finish that effort until the
questions below are addressed so help with those questions would be
much appreciated.

I also have a further question.  Isn't it dangerous for
FindLAPACK.cmake and FindBLAS.cmake (for at least CMake 2.8.2 version)
to set CMAKE_FIND_LIBRARY_SUFFIXES?  That variable potentially has
far-reaching consequences so wouldn't it be better to save the old
value, set CMAKE_FIND_LIBRARY_SUFFIXES for the particular find that is
being done, then restore the old value? The only other Find module
that sets CMAKE_FIND_LIBRARY_SUFFIXES is FindBoost.cmake, but that
module is careful to save and restore that variable like I suggest
should be done with FindLAPACK.cmake and FindBLAS.cmake.

If there is agreement from the CMake developers that FindLAPACK.cmake
and FindBLAS.cmake should be changed to save and restore
CMAKE_FIND_LIBRARY_SUFFIXES, I will write up the appropriate bug
report.

Alan
__________________________
Alan W. Irwin

Astronomical research affiliation with Department of Physics and
Astronomy,
University of Victoria (astrowww.phys.uvic.ca).

Programming affiliations with the FreeEOS equation-of-state implementation
for stellar interiors (freeeos.sf.net); PLplot scientific plotting software
package (plplot.org); the libLASi project (unifont.org/lasi); the Loads of
Linux Links project (loll.sf.net); and the Linux Brochure Project
(lbproject.sf.net).
__________________________

Linux-powered Science
__________________________

---------- Forwarded message ----------
Date: Mon, 20 Sep 2010 13:48:38 +0200
From: Arjen Markus <arjen.markus at deltares.nl>
To: "cmake at cmake.org" <cmake at cmake.org>
Subject: [CMake] Problem with GNU compilers - difference between "Windows" and
     "MinGW"

Hello,

Alan Irwin and me ran into a rather peculiar problem concerning the
use of the GNU compiler suite on Windows. Here is the set-up:
- Alan's free_eos project uses the LAPACK and BLAS libraries.
- I tested his build system under Windows and to do that I first
   built BLAS and LAPACK from sources.
- To my surprise the free_eos project's build system failed to
   find the libblas.a and liblapack.a files that I had generated.
- I used the "MinGW Makefiles" generator in both cases.

Here is what I conclude from an analysis of what is going on:
- With the "MinGW Makefiles" generator, the GNU compilers are
   recognised first - which is what I wanted.
- I use the GNU compilers in an environment that does not state
   it is "MinGW" and so, find_library uses the Windows convention
   for naming libraries. So with in free_eos, CMake expects the
   files blas.lib and lapack.lib.
- The CMake configuration for the GNU compilers - ignoring the specifics
   of Windows - always uses the Linux convention for library names.
   So it produces libblas.a and liblapack.a.

I may be mistaken in the details, but this is definitely what it boils
down to. Shouldn't the "MinGW Makefiles" generator take care of these
two naming conventions?

Regards,

Arjen


More information about the CMake mailing list