<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7638.1">
<TITLE>Why doesn't cmake generate the file?</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->
<P><FONT SIZE=2 FACE="Arial">Hi,</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">I have a generator which is given a data file "data.txt" and then generates an include file "gen.h".</FONT>
<BR><FONT SIZE=2 FACE="Arial">"gen.h" is told to CMake to be a generated file.</FONT>
<BR><FONT SIZE=2 FACE="Arial">"gen.h" is added to the library.</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">I thought CMake would find the custom command and generate the file "gen.h"</FONT>
<BR><FONT SIZE=2 FACE="Arial">Instead an error occurs, this is the output:</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">-- Configuring done</FONT>
<BR><FONT SIZE=2 FACE="Arial">CMake Error in libfoo.so/CMakeLists.txt:</FONT>
<BR><FONT SIZE=2 FACE="Arial"> Cannot find source file "gen.h". Tried extensions .c .C .c++ .cc</FONT>
<BR><FONT SIZE=2 FACE="Arial"> .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp .hxx .in .txx</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">Why doesn't CMake generate the file?</FONT>
</P>
<BR>
<P><FONT SIZE=2 FACE="Arial">Example code:</FONT>
<BR><FONT SIZE=2 FACE="Arial">------------------</FONT>
<BR><FONT SIZE=2 FACE="Arial"># Set variable containing all source files</FONT>
<BR><FONT SIZE=2 FACE="Arial">SET( SRCS</FONT>
<BR><FONT SIZE=2 FACE="Arial"> foo1.c</FONT>
<BR><FONT SIZE=2 FACE="Arial">)</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial"># Tell CMake that "gen.h" is a generated file</FONT>
<BR><FONT SIZE=2 FACE="Arial">SET_SOURCE_FILE_PROPERTIES( gen.h PROPERTIES GENERATED 1 )</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial"># Define custom command to generate "gen.h"</FONT>
<BR><FONT SIZE=2 FACE="Arial">ADD_CUSTOM_COMMAND(</FONT>
<BR><FONT SIZE=2 FACE="Arial"> OUTPUT gen.h</FONT>
<BR><FONT SIZE=2 FACE="Arial"> COMMAND echo "this command would generate 'gen.h' from data.txt"</FONT>
<BR><FONT SIZE=2 FACE="Arial"> DEPENDS data.txt</FONT>
<BR><FONT SIZE=2 FACE="Arial">)</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial"># Define to build a target shared object library named "libfoo.so" from the source files "${SRCS}".</FONT>
<BR><FONT SIZE=2 FACE="Arial"># The file "foo1.c" depends on the generated include file "gen.h"</FONT>
<BR><FONT SIZE=2 FACE="Arial">ADD_LIBRARY( foo SHARED ${SRCS}<B> gen.h</B> )</FONT>
<BR><FONT SIZE=2 FACE="Arial">------------------</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">PS: I'm using CMake V2.6, if this might be useful to know.</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">Best Regards,</FONT>
<BR><FONT SIZE=2 FACE="Arial">Joerg</FONT>
</P>
</BODY>
</HTML>