[CMake] add_custom and files generated into subdirectories
William R. Otte
wotte at dre.vanderbilt.edu
Wed Apr 11 12:18:02 EDT 2012
Hi -
I have a question about resolving dependencies when add_custom is used to generate files into subdirectories. Consider the following example (substantially simplified from my use case, but it captures the essence of what I am trying to do:
In the root of the project, I have the following:
/Foo.cmake:
add_custom_command (OUTPUT Bar/Foo.cpp
COMMAND touch Bar/Foo.cpp
)
#end /Foo.cmake
/CMakeLists.txt:
cmake_minimum_required(VERSION 2.8)
include (Foo.cmake)
add_subdirectory (Bar)
#end /CMakeLists.txt
In a subdirectory Bar, I have the following:
/Bar/Bar.cmake:
add_library ( Bar SHARED
Foo.cpp )
#end /Bar/Bar.cmake
/Bar/CMakeLists.txt:
include (Bar.cmake)
#end /Bar/CMakeLists.txt
When I attempt to compile this into makefiles, I get the following diagnostic from cmake:
CMake Error at Bar/Bar.cmake:1 (add_library):
Cannot find source file:
Foo.cpp
Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
.hxx .in .txx
Call Stack (most recent call first):
Bar/CMakeLists.txt:1 (include)
I understand why that diagnostic is appearing (cmake knows about a Bar/Foo.cpp, but not about a Foo.cpp). Is there some way to get Cmake to automagically realize that within the context of Bar.cmake, Foo.cpp and Bar/Foo.cpp are the same thing?
thanks,
/-Will
More information about the CMake
mailing list