[CMake] Associating files with command
Ryan Pavlik
rpavlik at iastate.edu
Tue Aug 31 16:38:39 EDT 2010
You were close:
here's a function to handle the wrapping - could stick this in the
Findtolua.cmake file that you've hopefully made.
function wrap_tolua(outvar)
set(outfiles)
foreach(in ${ARGN})
get_filename_component(inAbs ${in} ABSOLUTE)
get_filename_component(basename ${in} NAME_WE)
set(outfile
"${CMAKE_CURRENT_BINARY_DIR}/generated_${basename}.cpp")
list(APPEND outfile "${outfile}")
add_custom_command(OUTPUT "${outfile}"
COMMAND ${TOLUA_EXECUTABLE} -o "${outfile}" -n ${basename}
"${inAbs}"
DEPENDS "${inAbs}"
COMMENT "Wrapping ${basename} with tolua")
endforeach()
set(${outvar} ${outfiles} PARENT_SCOPE)
endfunction()
Then, to do your example:
find_package(tolua REQUIRED)
wrap_tolua(TOLUA_WRAPPED_SRC math.pkg another.pkg)
add_library(myLib theMain.cpp ${TOLUA_WRAPPED_SRC})
(This is similar to how Qt and FLTK builds take place.)
Hope this helps! Please share your find module with this code added and
tweaked, if needed - thanks!
Ryan
On 08/31/2010 02:44 PM, Anders Backman wrote:
> Hi all.
>
> 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.
>
> 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.
>
> 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.
> 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.
>
> So I guess Im looking for something like:
>
> add_library(myLib theMain.cpp
> generated_math.cpp
> math.pkg
> )
>
> set_source_files_properties(generated_math.cpp GENERATED)
>
> being able to tell CMake that .pkg files are treated in a certain way:
> The command that I want to execute for each .pkg is:
>
> tolua -o generated_math.cpp -n math math.pkg
>
> So any hints on how to do this?
> 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...
>
> /A
>
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake
--
Ryan Pavlik
HCI Graduate Student
Virtual Reality Applications Center
Iowa State University
http://academic.cleardefinition.com
http://rpavlik.youcanbook.me
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20100831/1d4d6948/attachment.htm>
More information about the CMake
mailing list