On 04/03/2020 09:24, Lukas van de Wiel wrote:
we are running a Fortran code containing several dozen modules. These are build in two versions, differentiated by #ifdef statements. The archive files of the two versions are being kept apart by different file names, but the .mod files have fixed names, based on the name of the module. During a parallel build, a .mod file of one version may be overwritten by the partner .mod file while the first one is still required by other bits of ode that depends on it.

To circumvent it, I wrote .mod files of each variety in their own directory using

target_compile_option(moduleTarget PUBLIC -JdirectoryName)

Hi Lukas,

we do something similar. We have it working by setting the target property Fortran_MODULE_DIRECTORY, in our case that is on a static library which contains the Fortran object code. We have two versions, one built with OpenMP and another without. One library has a default module directory and for the other we set the property above to a sub-directory of the binary directory, e.g. "set_target_properties(<target>, Fortran_MODULE_DIRECTORY, ${CMAKE_BINARY_DIR}/fortran_modules_omp)". We also set the property on the final executables where required so I assume it does not propagate outwards from the static library to executables linking it :(

Regards
Bill Somerville.

--

Powered by kitware.com/cmake

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

Visit other Kitware open-source projects at https://www.kitware.com/platforms

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake

This mailing list is deprecated in favor of https://discourse.cmake.org

Reply via email to