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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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