Perfect, thankyou so much! That nailed it! On 24 January 2017 at 20:52, Michael Ellery <mellery...@gmail.com> wrote:
> The syntax of your add_custom_target is not quite right…I would try > something more like: > > add_custom_target( Webpack ALL > $WEBPACK > DEPENDS webpack.config.js > BYPRODUCTS public/bundle.js > ) > > …that’s untested, of course. I you do that, then I think you don’t need > the add_custom_command at all….but you will still want to make some of your > other targets depend on this target if they need bundle.js before they run. > > > On Jan 24, 2017, at 11:34 AM, doug livesey <biot...@gmail.com> wrote: > > > > Hi -- sorry about the really late reply, I've been away. Up to Hadrian's > Wall, and then for a Dark Skies observatory evening. > > It was ace. :) > > I've added the following to my CMakeLists.txt file: > > > > > set(WEBPACK ${CMAKE_SOURCE_DIR}/node_modules/.bin/webpack) > > > configure_file(webpack.config.js webpack.config.js) > > > add_custom_target(public/bundle.js) > > > add_custom_command(OUTPUT public/bundle.js COMMAND ${WEBPACK}) > > > > However, when I try to run `cmake ..` (I'm using a build subdirectory), > I get the following error: > > > > > CMake Error at CMakeLists.txt:30 (add_custom_target): > > > add_custom_target called with invalid target name "public/bundle.js". > > > Target names may not contain a slash. Use ADD_CUSTOM_COMMAND to > generate > > > files. > > > > I'm guessing that this means that I should be running some of those > commands in a CMakeLists.txt file in a subdirectory (maybe public/) and > calling `add_subdirectory(public)` from my top-level file? > > I've tried this a couple of ways, but so far haven't got it working. > > Am I on the right sort of approach, or have I wandered far from the > beaten track? > > Thanks again for your help, > > Doug. > > > > On 22 January 2017 at 00:16, Michael Ellery <mellery...@gmail.com> > wrote: > > add_custom_command is the probably the right thing…but it needs to be > triggered by a dependency relationship. You will specify public/bundle.js > as the OUTPUT parameter of the add_custom_command and then some other > target or install command needs to have that file listed in its sources, > and then CMAKE will understand that it needs to run the custom command to > generate that OUTPUT file before it runs the dependent target. I think > add_custom_command can also be explicitly linked to a specific target > (there are two forms of the command) - and in that case I think it always > runs (?) when that target rebuilds…I’m not completely sure about that, so > you might need to test. > > > > Alternatively, if you want to run the generation at the time of makefile > generation (when CMAKE is run…), then have a look at execute_process. The > downside of that is that it will generally always run when CMAKE is run, > but never during the make process so it doesn’t really handle updates to > the source (input) files very well. I’m not sure which technique applies > best to your situation here. > > > > HTH, > > Mike > > > > > On Jan 21, 2017, at 4:01 PM, doug livesey <biot...@gmail.com> wrote: > > > > > > Hi, I want to call the following command as part of a build: > > > > > > $ ./node_modules/.bin/webpack > > > > > > This should generate a file public/bundle.js > > > > > > I'm really struggling with this. I guess there's something fundamental > that I'm not understanding. `add_custom_command` doesn't seem to be doing > anything. > > > I would anticipate that it would put the command I want to call in the > makefile, but it hasn't. > > > If anyone could advise me on what I'm not getting here, that would be > brilliant. > > > Cheers, > > > Doug. > > > -- > > > > > > Powered by www.kitware.com > > > > > > Please keep messages on-topic and check the CMake FAQ at: > http://www.cmake.org/Wiki/CMake_FAQ > > > > > > Kitware offers various services to support the CMake community. For > more information on each offering, please visit: > > > > > > CMake Support: http://cmake.org/cmake/help/support.html > > > CMake Consulting: http://cmake.org/cmake/help/consulting.html > > > CMake Training Courses: http://cmake.org/cmake/help/training.html > > > > > > Visit other Kitware open-source projects at http://www.kitware.com/ > opensource/opensource.html > > > > > > Follow this link to subscribe/unsubscribe: > > > http://public.kitware.com/mailman/listinfo/cmake > > > > > >
-- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake