[CMake] enable_language( ... OPTIONAL) causes error on second cmake run

Marcel Loose loose at astron.nl
Fri Nov 27 04:03:17 EST 2009


Hi Alex,

I've written a very small work-around for my problem. 

I noted that 'enable_language(Fortran)' sets the compiler to
CMAKE_Fortran_COMPILER-NOTFOUND, whereas 'enable_language(Fortran
OPTIONAL) sets it to the empty string. So what I do now is check whether
CMAKE_Fortran_COMPILER is defined and matches the empty string, and if
so, I set it to CMAKE_Fortran_COMPILER-NOTFOUND. I had expected that I
should set it as a cache variable, but it only seems to work if I set it
as a normal variable.

# Work-around for CMake issue #9220
if(DEFINED CMAKE_Fortran_COMPILER AND CMAKE_Fortran_COMPILER MATCHES "^
$")
  set(CMAKE_Fortran_COMPILER CMAKE_Fortran_COMPILER-NOTFOUND)
endif(DEFINED CMAKE_Fortran_COMPILER AND CMAKE_Fortran_COMPILER MATCHES
"^$")

I'll add this work-around to the notes for issue #9220.

Best regards,
Marcel Loose.


On Thu, 2009-11-26 at 16:12 +0100, Marcel Loose wrote:
> Hi Alex,
> 
> On second thought: the problem I encountered is somewhat different than
> the one described in issue #9220. The problem there is that the compiler
> name "gcc whatever" is interpreted as compiler "gcc" with an argument
> "whatever".
> 
> In my case I do not set a compiler from the command line. I use
> 'enable_language(Fortran OPTIONAL)' and let CMake search for the Fortran
> compiler. Since there's no Fortran compiler installed, CMake will not
> find it. So far, so good. But, when I run CMake a second time, I get the
> error I reported. 
> 
> What's your thought on this?
> 
> Best regards,
> Marcel Loose.
> 
> 
> On Wed, 2009-11-25 at 19:16 +0100, Alexander Neundorf wrote:
> > On Wednesday 25 November 2009, Marcel Loose wrote:
> > > Hi Alex,
> > >
> > > Maybe I'm overlooking all kinds of side effects, but the problem is in
> > > line 6 of CMakeFortranInformation.cmake, where get_filename_component()
> > > is called with an incorrect number of arguments. This happens because
> > > ${CMAKE_Fortran_COMPILER} is empty. If I simply put quotes around
> > > ${CMAKE_Fortran_COMPILER} the problem is solved. Or so it seems. Right,
> > > or wrong?
> > 
> > I think there's more to it IIRC, the rest of the enable-language process has 
> > to be canceled correctly, which is probably not the case with your fix.
> > But please put this comment in the bugtracker, so it doesn't get lost.
> > 
> > Alex
> 
> _______________________________________________
> Powered by www.kitware.com
> 
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
> 
> Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
> 
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake



More information about the CMake mailing list