[CMake] Set Fortran compiler in CMakeLists.txt?

Nikolaus Rath nrath at trialphaenergy.com
Thu Apr 30 18:40:04 EDT 2015


On 04/30/2015 03:27 PM, Bill Hoffman wrote:
> On 4/30/2015 2:50 PM, Nikolaus Rath wrote:
>> Hmm. My situation is a bit different. We have different Fortran
>> compilers installed, but this specific one needs to be compiled using
>> the intel compiler. But by default, CMake selects gfortran.
>>
>> At the moment I abort the build if FC != ifort, but this is not exactly
>> a good user experience. Imagine:
>>
>> $ cmake ..
>> Unsupported! Please set FC=ifort
>> $ FC=ifort cmake ..
>>
>> For the user, this raises the question: if the build system knows what
>> compiler it needs, why doesn't it just use it instead of telling me to
>> tell it to use it?:-)
>
> I suppose the CMake way to do this would be to test for the "feature" 
> that you need from the compiler.  Then complain that the compiler picked 
> does not support "feature N".  This would be done with a try_compile. 
> That way if the user has a compiler that supports what you need intel or 
> gfortran it will work.


In practice this still means that the user still has to manually choose
ifort, and that the error message is now almost deliberately obfuscated
("please use ifort" is much easier to understand than "your compiler
does not support x, y, z  and a. Please switch to a different compiler").

I know what compilers we have installed, what features they have, and
which one's are compatible with the code. Is there really no way to
encode that knowledge in the build system?

Best,
-Nikolaus



More information about the CMake mailing list