Hi all,
My project is mostly built with Fortran that uses mpif90 as a wrapper. I use 
find_package(MPI REQUIRED) to locate f90mpi and then change set the 
CMAKE_Fortran_COMPILER to ${MPI_Fortran_COMPILER}.



This seemed to work fine until started wrapping up some utilities that do not 
need to be parallelized. The MPI compiler seems to take quite a bit longer to 
compile than the serial compiler (ifort). The utilities that would be 
appropriate for serial compilation have a slighlty different extension (f90 
instead of F90).



I realize it is unusual to maintain two compilers for the same language , but 
in this case the two are related as "mpi wrapper" and "wrapee". There seem to 
be a few possibilities:
1. Maintain a variable that refers to the compiler and flags for serial and 
switch to them for just the utilities. Is this even legal? Can I change 
CMAKE_Fortran_COMPILER at the file or library scope? Could I create a custom 
rule that somehow inherits from the Fortran rule or is this a can of worms?
2. Never switch to mpiwrapper, but instead make us of the libraries it finds. I 
have seen this technique referenced more than I have seen the use of mpif90, 
but I don't know what aspects of mpif90 might get left out by doing this. How 
would I maintain two sets of flags ... is there an easy way to override flags 
on a per-target or per-file basis?



Or is there a better way entirely?



Thanks so much,



Eli


--

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

Reply via email to