You could also "encourage" the use of the FC env var by adding this to
the very top of your CMakeLists file, before the project command:

  if(NOT "$ENV{FC}" MATCHES "ifort")
    message(FATAL_ERROR "please set the environment variable FC to the
full path to ifort before running CMake")
  endif()

Or, if you know the full path to ifort already, perhaps

  set(ENV{FC} "/full/path/to/ifort")

would work in that same location...

If you take the set ENV{FC} route, I would issue a status message
saying you're doing it so users can figure it out...


HTH,
David C.


On Thu, Apr 30, 2015 at 11:06 PM, Jean-Christophe Fillion-Robin
<jchris.filli...@kitware.com> wrote:
> Hi Nikolaus,
>
> May you could ask your user to invoke cmake with the -C argument allowing to
> specify an initial cache file with value specific to the environment ?
>
> It would for example contain:
>
> set(FC "ifort" CACHE PATH "Intel Fortran compiler")
>
> See http://www.cmake.org/cmake/help/v3.1/manual/cmake.1.html
>
> Hth
> Jc
>
> On Thu, Apr 30, 2015 at 6:40 PM, Nikolaus Rath <nr...@trialphaenergy.com>
> wrote:
>>
>> 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
>>
>> --
>>
>> Powered by www.kitware.com
>>
>> Please keep messages on-topic and check the CMake FAQ at:
>> http://www.cmake.org/Wiki/CMake_FAQ
>>
>> Kitware offers various services to support the CMake community. For more
>> information on each offering, please visit:
>>
>> CMake Support: http://cmake.org/cmake/help/support.html
>> CMake Consulting: http://cmake.org/cmake/help/consulting.html
>> CMake Training Courses: http://cmake.org/cmake/help/training.html
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Follow this link to subscribe/unsubscribe:
>> http://public.kitware.com/mailman/listinfo/cmake
>
>
>
>
> --
> +1 919 869 8849
>
> --
>
> Powered by www.kitware.com
>
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Kitware offers various services to support the CMake community. For more
> information on each offering, please visit:
>
> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/cmake
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake

Reply via email to