MantisBT - CMake
View Issue Details
0000947CMakepublic2004-06-23 15:502004-07-12 11:09
Paul Oppenheim 
Bill Hoffman 
lowmajoralways
closedfixed 
 
 
0000947: EXEC_PROGRAM - pathing error on cmake 2.0.1, OS X 10.3
When trying to invoke an external makefile with the command:
EXEC_PROGRAM(make ${PROJECT_SOURCE_DIR}/Source/hi)

cmake executes:
-- Check for working C compiler: gcc
-- Check for working C compiler: gcc -- works
-- Check for working CXX compiler: c++
-- Check for working CXX compiler: c++ -- works
running cd "/Users/crescent/cmake-test-2004.06.23/cmake\ path/Source/hi" && make 2>&1
sh: line 1: cd: /Users/crescent/cmake-test-2004.06.23/cmake\ path/Source/hi: No such file or directory
-- Configuring done
-- Generating done


The quotes are what is killing it:
% cd "/Users/crescent/cmake-test-2004.06.23/cmake\ path/Source/hi"
tcsh: /Users/crescent/cmake-test-2004.06.23/cmake\ path/Source/hi: No such file or directory.
%
%
% cd /Users/crescent/cmake-test-2004.06.23/cmake\ path/Source/hi
%
No tags attached.
Issue History

Notes
(0001245)
Bill Hoffman   
2004-07-05 08:53   
What version of OS x are you using?
On the OS X machine here, all shells on
the machine work with either double quotes
or \ for spaces in the path. I have tried
bash, csh, sh, tcsh, and zsh.
"foo\ bar" does not work but either:
"foo bar" or foo\ bar works. Could this be something
in your .cshrc file?


kitware@krondor $ mkdir foo\ bar
kitware@krondor $ cd foo\ bar
kitware@krondor $ cd ~
kitware@krondor $ cd "foo\ bar" ~
cd: no such file or directory: foo\ bar
kitware@krondor $ cd "foo bar" ~
kitware@krondor $ tcsh
[krondor:~/foo bar] kitware% cd
[krondor:~] kitware% cd "foo bar"
[krondor:~/foo bar] kitware% cd
[krondor:~] kitware% cd foo\ bar
[krondor:~/foo bar] kitware% cd
[krondor:~] kitware% cd "foo\ bar"
tcsh: foo\ bar: No such file or directory.
(0001246)
Bill Hoffman   
2004-07-05 08:55   
This is tcsh:

[krondor:~/foo bar] kitware% cd
[krondor:~] kitware% cd "foo bar"
[krondor:~/foo bar] kitware%
(0001253)
Bill Hoffman   
2004-07-09 14:43   
I think this is fixed in cvs cmake.
Your test works fine:

[krondor:cmake-test-2004.06.23/cmake path/Build] kitware% ~/Nightly/My\ Testing/CMake-gcc/bin/cmake ..
-- Check for working C compiler: gcc -- works
-- Check for working CXX compiler: c++ -- works
running cd "/Users/kitware/Bill/cmake-test-2004.06.23/cmake path/Source/hi" && make 2>&1
c++ -O3 -Wall -I/usr/include -I./ -c hi.cpp
ar cr libhi.a hi.o
ranlib libhi.a
-- Configuring done
-- Generating done
[krondor:cmake-test-2004.06.23/cmake path/Build] kitware% make
cmake.depends is up-to-date
/Users/kitware/Bill/cmake-test-2004.06.23/cmake path/Build/Source: building default_target
Building executable /Users/kitware/Bill/cmake-test-2004.06.23/cmake\ path/Build/Source/hello...
(0001256)
Paul Oppenheim   
2004-07-12 11:09   
Apologies:

I just noticed that the web board deleted the backslash escape characters. The whole point of this bug was that the path was already backslash-escaped, AND quoted. The UNIX cd command does not have problems with either one alone, but with both, it appears to the cd command that the name of the file actually has a backslash in it. I've had problems recently with ADD_CUSTOM_COMMAND as well, but in that case, there's more control over the quoting, naturally because that's exactly what that command is for.

Thanks for looking into this, cmake is a wonderful tool for the few of us developers who really need to build on all these platforms, and don't have the resources to coordinate all of the separate build files by hand.