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