[CMake] [BUG] cmake-2.8.0, Unix Makefiles generator creates incorrect module dependency for Fortran 95 if there is an embedded blank in the directory name

Brad King brad.king at kitware.com
Mon Jan 4 10:28:09 EST 2010


Alan W. Irwin wrote:
> Hi Brad and Alin:
> 
> Here is an example of the bug:
> 
> cat CMakeFiles/x02f95.dir/depend.make
> # CMAKE generated file: DO NOT EDIT!
> # Generated by "Unix Makefiles" Generator, CMake Version 2.8
> 
> 
> f95/CMakeFiles/x02f95.dir/x02f.f90.o: "/home/software/plplot
> svn/installcmake/lib/fortran/modules/plplot/plplot.mod"
> 
> The double quotes are not the correct way with GNU make to handle embedded
> blanks in a file dependency.  Therefore, the following error message is
> generated when running the "make x02f95" command:
> 
> make[3]: *** No rule to make target "/home/software/plplot', needed by
> f95/CMakeFiles/x02f95.dir/x02f.f90.o'.  Stop.
> 
> The fix is to drop the quotes around the
> f95/CMakeFiles/x02f95.dir/x02f.f90.o dependency and use an escaped blank
> instead.

Yes, all other Makefile dependencies are written like this.  It's a typo
in "cmDependsFortran.cxx" which uses SHELL escapes instead of MAKEFILE
escapes.  There is actually a test for this that runs with a space in
the path, but it passes because the module path in the test appears
below the build tree and is thus converted to a space-free relative
path.

The commit below fixes the problem and enhances our test to cover the
case.

-Brad

Fix escapes in Fortran depend.make entries
/cvsroot/CMake/CMake/Source/cmDependsFortran.cxx,v  <--  Source/cmDependsFortran.cxx
new revision: 1.51; previous revision: 1.50
/cvsroot/CMake/CMake/Tests/Fortran/CMakeLists.txt,v  <--  Tests/Fortran/CMakeLists.txt
new revision: 1.37; previous revision: 1.36
/cvsroot/CMake/CMake/Tests/Fortran/Executable/CMakeLists.txt,v  <--  Tests/Fortran/Executable/CMakeLists.txt
new revision: 1.3; previous revision: 1.2


More information about the CMake mailing list