[CMake] Unmet dependency when builddir is a symlink out of srcdir
Nicolas Desprès
nicolas.despres at gmail.com
Thu Feb 24 12:16:10 EST 2011
Hi there,
I am having a problem with cmake-2.8.4 for Linux with the Makefile
generator. I have my srcdir in an encrypted partition and my builddir
in a normal partition. For convenience I have a symlink inside my
srcdir pointing to my buildir.
Here the scenario:
$ pwd
/home/despre_n/src/test/helloworld-cmake # src is a symlink to
/media/blabla/src (the encrypted partition)
$ find
.
./src
./src/main.cc
./CMakeLists.txt
$ cat CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(helloworld)
add_executable(helloworld
src/main.cc
)
$ cat src/main.cc
#include <iostream>
int main(void)
{
std::cout << "Hello world\n" << std::endl;
return 0;
}
$ mkdir -p ~/build/test/helloworld-cmake/_build # Out of
the encrypted partition
$ ln -s ~/build/test/helloworld-cmake/_build # Create
the convenient symlink
$ cd _build
$ cmake ..
CMake Error: The source directory
"/home/despre_n/build/test/helloworld-cmake" does not appear to
contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.
$ cmake ~/src/test/helloworld-cmake
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Configuring done
-- Generating done
-- Build files have been written to:
/home/despre_n/src/test/helloworld-cmake/_build
$ make
-- Configuring done
-- Generating done
-- Build files have been written to:
/home/despre_n/src/test/helloworld-cmake/_build
Scanning dependencies of target helloworld
make[2]: *** No rule to make target `../src/main.cc', needed by
`CMakeFiles/helloworld.dir/src/main.cc.o'. Stop.
make[1]: *** [CMakeFiles/helloworld.dir/all] Error 2
make: *** [all] Error 2
I have tested with cmake-2.8.2 and I have the same result.
I thought CMake was generating absolute path whenever possible. Maybe
it should resolve symlinks as well. I don't know. Shall I create a
bug report?
Regards,
--
Nicolas Desprès
More information about the CMake
mailing list