[CMake] rule for generated header files (in sub-directories)
Christoph Gysin
christoph.gysin at gmail.com
Mon Nov 19 06:15:49 EST 2012
I'm trying to create a rule to generate header files. I have
successfully created a working example based on the CMake
documentation:
cmake_minimum_required(VERSION 2.8)
project(foobar)
add_custom_command(
OUTPUT Mockfoo.h
COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/foo.h Mockfoo.h
DEPENDS foo.h
COMMENT "generating Mockfoo.h"
)
add_custom_target(
Mockfoo.h
DEPENDS foo.h
)
set_source_files_properties(
foo.c
OBJECT_DEPENDS Mockfoo.h
)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
add_executable(foo foo.c)
Now I'd like to apply it to my project. I have several sub-directories
with header files, and sub-directories with sources that need to
include mocks generated out of those headers.
Example directory structure:
include1/
foo1.h
include2/
foo2.h
src1/
src1.c
src2/
src2.c
src1/src1.c:
#include <Mockfoo1.h>
src2/src2.c:
#include <Mockfoo2.h>
I can create the mock targets in inc1/CMakeLists.txt:
add_custom_command(
OUTPUT Mockfoo1.h
COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/foo1.h Mockfoo1.h
DEPENDS foo1.h
COMMENT "generating Mockfoo1.h"
)
add_custom_target(
Mockfoo1.h
DEPENDS foo1.h
)
But how to I now specify the dependency in src1/CMakeLists.txt?
set_source_files_properties(
foo1.c
OBJECT_DEPENDS lib1/Mockfoo1.h
)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
add_executable(foo1 foo1.c)
This doesn't work:
make[2]: *** No rule to make target `lib1/Mockfoo1.h', needed by
`src1/CMakeFiles/foo1.dir/foo1.c.o'. Stop.
I also tried:
OBJECT_DEPENDS Mockfoo1.h
OBJECT_DEPENDS ../Mockfoo1.h
OBJECT_DEPENDS ${CMAKE_BINARY_DIR}/Mockfoo1.h
OBJECT_DEPENDS ${CMAKE_BINARY_DIR}/lib1/Mockfoo1.h
Can someone shed some light on what I am doing wrong?
Thanks,
Chris
--
echo mailto: NOSPAM !#$.'<*>'|sed 's. ..'|tr "<*> !#:2" org at fr33z3
More information about the CMake
mailing list