That was very close to what I wanted. But not to 100%, Im not sure if it is possible to get to what I really want:<div><br></div><div>On one hand, I get one build rule for each tolua file, but it was not associated to the actual tolua file. So I cannot do right click->compile on the .pkg file.</div>
<div><br></div><div>I can however go further down, locate the matching rule, right click on that and compile.</div><div>So for a large project with hundred of .pgk file, this is not optimal. I would like to be able to do ctrl+F7 to compile the current file for example...</div>
<div><br></div><div>Some slight modifications was needed on the function:</div><div><br></div><div><div>FUNCTION (wrap_tolua outvar)</div><div> set(outfiles)</div><div> foreach(in ${ARGN})</div><div> get_filename_component(inAbs ${in} ABSOLUTE)</div>
<div> get_filename_component(basename ${in} NAME_WE)</div><div> get_filename_component(path ${in} PATH)</div><div> file(MAKE_DIRECTORY ${path}/generated)</div><div> set(outfile "${path}/generated/generated_${basename}.cpp")</div>
<div> list(APPEND outfiles "${outfile}")</div><div> add_custom_command(OUTPUT "${outfile}"</div><div> COMMAND ${TOLUA_EXECUTABLE} -o "${outfile}" -n ${basename} "${inAbs}" -L "lua/access_hook.lua"</div>
<div> DEPENDS "${inAbs}"</div><div> WORKING_DIRECTORY "${path}"</div><div> COMMENT "Wrapping ${basename} with tolua")</div><div> endforeach()</div><div> set(${outvar} ${outfiles} PARENT_SCOPE)</div>
<div>endfunction()</div><div><br></div><div>So unless someone knows how to add a file to a library, associate it with a custom build command, this is what I have to stick to.</div><div><br></div><div>/Anders</div><br><div class="gmail_quote">
On Tue, Aug 31, 2010 at 10:38 PM, Ryan Pavlik <span dir="ltr"><<a href="mailto:rpavlik@iastate.edu">rpavlik@iastate.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div bgcolor="#ffffff" text="#000000">
You were close:<br>
<br>
here's a function to handle the wrapping - could stick this in the
Findtolua.cmake file that you've hopefully made.<br>
<br>
function wrap_tolua(outvar)<br>
set(outfiles)<br>
foreach(in ${ARGN})<br>
get_filename_component(inAbs ${in} ABSOLUTE)<br>
get_filename_component(basename ${in} NAME_WE)<br>
set(outfile
"${CMAKE_CURRENT_BINARY_DIR}/generated_${basename}.cpp")<br>
list(APPEND outfile "${outfile}")<br>
add_custom_command(OUTPUT "${outfile}"<br>
COMMAND ${TOLUA_EXECUTABLE} -o "${outfile}" -n
${basename} "${inAbs}"<br>
DEPENDS "${inAbs}"<br>
COMMENT "Wrapping ${basename} with tolua")<br>
endforeach()<br>
set(${outvar} ${outfiles} PARENT_SCOPE)<br>
endfunction()<br>
<br>
<br>
Then, to do your example:<br>
<br>
find_package(tolua REQUIRED)<br>
<br>
wrap_tolua(TOLUA_WRAPPED_SRC math.pkg another.pkg)<br>
add_library(myLib theMain.cpp ${TOLUA_WRAPPED_SRC})<br>
<br>
(This is similar to how Qt and FLTK builds take place.)<br>
<br>
Hope this helps! Please share your find module with this code added
and tweaked, if needed - thanks!<br>
<br>
Ryan<div><div></div><div class="h5"><br>
<br>
On 08/31/2010 02:44 PM, Anders Backman wrote:
</div></div><blockquote type="cite"><div><div></div><div class="h5">Hi all.
<div><br>
</div>
<div>I have a directory of .pkg files to be processed by tolua.
This in turn generates a bunch of cpp files, which I then link
into a library.</div>
<div><br>
</div>
<div>My problem right now is that, I would like to generate a
project, where each .pkg is associated with a custom command, so
that I in visual studio (for exampel) can "compile" each .pkg
file individually.</div>
<div><br>
</div>
<div>I have managed to create a library, and to get all the
generated cpp file associated to the library+a custom target
command which is executed PRE_BUILD to the library.</div>
<div>But thats not quite what I would like. Because then I cant
just compile one .pkg file if I edit it. Using the above
approach, requires me to build the whole project, which compiles
ALL .pkg files associated to it, not what I want. I want to
setup a proper dependency chain, so that If a .pkg file is
modified, the corresponding "generated"_xx.cpp is generated, and
the project is linked.</div>
<div><br>
</div>
<div>So I guess Im looking for something like:</div>
<div><br>
</div>
<div>add_library(myLib theMain.cpp </div>
<div> generated_math.cpp </div>
<div> math.pkg </div>
<div>)</div>
<div><br>
</div>
<div>
<div>set_source_files_properties(generated_math.cpp GENERATED)</div>
</div>
<div><br>
</div>
<div>being able to tell CMake that .pkg files are treated in a
certain way:</div>
<div>The command that I want to execute for each .pkg is:</div>
<div><br>
</div>
<div>tolua -o generated_math.cpp<span style="white-space:pre-wrap"> </span>-n math<span style="white-space:pre-wrap"> </span>math.pkg</div>
<div><br>
</div>
<div>So any hints on how to do this?</div>
<div>I can certainly do this in VisualStudio, adding .pkg files to
the project, and setting the build events on it, but I need a
portable solution...</div>
<div><br>
</div>
<div>/A</div>
</div></div><pre><fieldset></fieldset>
_______________________________________________
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><div class="im">
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a>
Please keep messages on-topic and check the CMake FAQ at: <a href="http://www.cmake.org/Wiki/CMake_FAQ" target="_blank">http://www.cmake.org/Wiki/CMake_FAQ</a>
Follow this link to subscribe/unsubscribe:
<a href="http://www.cmake.org/mailman/listinfo/cmake" target="_blank">http://www.cmake.org/mailman/listinfo/cmake</a></div></pre>
</blockquote>
<br>
<pre cols="72">--
Ryan Pavlik
HCI Graduate Student
Virtual Reality Applications Center
Iowa State University
<a href="http://academic.cleardefinition.com" target="_blank">http://academic.cleardefinition.com</a>
<a href="http://rpavlik.youcanbook.me" target="_blank">http://rpavlik.youcanbook.me</a></pre>
</div>
<br>_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the CMake FAQ at: <a href="http://www.cmake.org/Wiki/CMake_FAQ" target="_blank">http://www.cmake.org/Wiki/CMake_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.cmake.org/mailman/listinfo/cmake" target="_blank">http://www.cmake.org/mailman/listinfo/cmake</a><br></blockquote></div><br><br clear="all"><br><br>
</div>