[CMake] Fortran 90 module output directories, dependency analysis

Jed Brown jed at 59A2.org
Mon May 31 07:41:14 EDT 2010


Is there a way to specify where generated *.mod files will be placed?
Something analogous to CMAKE_LIBRARY_OUTPUT_DIRECTORY?

Also, I notice that if I delete a module file, the build fails (unlike
everything else where it will be properly regenerated).  This is with a
plain Makefile build, cmake-2.8.1, after a successful complete build:

$ rm petscmat.mod
$ make VERBOSE=1
/usr/bin/cmake -H/home/jed/petsc -B/home/jed/petsc/ompi-complex-int64 --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /home/jed/petsc/ompi-complex-int64/CMakeFiles /home/jed/petsc/ompi-complex-int64/CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make[1]: Entering directory `/home/jed/petsc/ompi-complex-int64'
make -f CMakeFiles/petsc.dir/build.make CMakeFiles/petsc.dir/depend
make[2]: Entering directory `/home/jed/petsc/ompi-complex-int64'
cd /home/jed/petsc/ompi-complex-int64 && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/jed/petsc /home/jed/petsc /home/jed/petsc/ompi-complex-int64 /home/jed/petsc/ompi-complex-int64 /home/jed/petsc/ompi-complex-int64/CMakeFiles/petsc.dir/DependInfo.cmake --color=
make[2]: Leaving directory `/home/jed/petsc/ompi-complex-int64'
make -f CMakeFiles/petsc.dir/build.make CMakeFiles/petsc.dir/requires
make[2]: Entering directory `/home/jed/petsc/ompi-complex-int64'
make -f CMakeFiles/petsc.dir/build.make CMakeFiles/petsc.dir/src/sys/f90-mod/petscmod.F.o.provides.build
make[3]: Entering directory `/home/jed/petsc/ompi-complex-int64'
/usr/bin/cmake -E cmake_copy_f90_mod petscsys CMakeFiles/petsc.dir/petscsys.mod.stamp GNU
/usr/bin/cmake -E cmake_copy_f90_mod petscsysdef CMakeFiles/petsc.dir/petscsysdef.mod.stamp GNU
/usr/bin/cmake -E touch CMakeFiles/petsc.dir/src/sys/f90-mod/petscmod.F.o.provides.build
make[3]: Leaving directory `/home/jed/petsc/ompi-complex-int64'
make -f CMakeFiles/petsc.dir/build.make CMakeFiles/petsc.dir/src/vec/f90-mod/petscvecmod.F.o.provides.build
make[3]: Entering directory `/home/jed/petsc/ompi-complex-int64'
/usr/bin/cmake -E cmake_copy_f90_mod petscis CMakeFiles/petsc.dir/petscis.mod.stamp GNU
/usr/bin/cmake -E cmake_copy_f90_mod petscisdef CMakeFiles/petsc.dir/petscisdef.mod.stamp GNU
/usr/bin/cmake -E cmake_copy_f90_mod petscvec CMakeFiles/petsc.dir/petscvec.mod.stamp GNU
/usr/bin/cmake -E cmake_copy_f90_mod petscvecdef CMakeFiles/petsc.dir/petscvecdef.mod.stamp GNU
/usr/bin/cmake -E touch CMakeFiles/petsc.dir/src/vec/f90-mod/petscvecmod.F.o.provides.build
make[3]: Leaving directory `/home/jed/petsc/ompi-complex-int64'
make -f CMakeFiles/petsc.dir/build.make CMakeFiles/petsc.dir/src/mat/f90-mod/petscmatmod.F.o.provides.build
make[3]: Entering directory `/home/jed/petsc/ompi-complex-int64'
/usr/bin/cmake -E cmake_copy_f90_mod petscmat CMakeFiles/petsc.dir/petscmat.mod.stamp GNU
Error copying Fortran module "petscmat".  Tried "PETSCMAT.mod" and "petscmat.mod".
make[3]: *** [CMakeFiles/petsc.dir/src/mat/f90-mod/petscmatmod.F.o.provides.build] Error 1
make[3]: Leaving directory `/home/jed/petsc/ompi-complex-int64'
make[2]: *** [CMakeFiles/petsc.dir/src/mat/f90-mod/petscmatmod.F.o.provides] Error 2
make[2]: Leaving directory `/home/jed/petsc/ompi-complex-int64'
make[1]: *** [CMakeFiles/petsc.dir/all] Error 2
make[1]: Leaving directory `/home/jed/petsc/ompi-complex-int64'
make: *** [all] Error 2


Jed


More information about the CMake mailing list