Thanks for the feedback!

Here is an updated patch that uses a hash as filename, .cmd as extension,
boolean argument, and some error checks.

Martin

On Fri, May 20, 2016 at 3:40 PM Brad King <brad.k...@kitware.com> wrote:

> On 05/20/2016 03:41 AM, Martin Ankerl wrote:
> > From what I have understood it seems more safe to use .bat and not
> > .cmd, because the behavior of the errorlevel is different. From
> >
> http://waynes-world-it.blogspot.co.at/2008/08/difference-between-bat-and-cmd.html
> :
> >
> >> The differences between .CMD and .BAT as far as CMD.EXE is concerned
> are:
> >> With extensions enabled, PATH/APPEND/PROMPT/SET/ASSOC in .CMD files
> will set
> >> ERRORLEVEL regardless of error. .BAT sets ERRORLEVEL only on errors.
>
> I read that to mean the opposite: cmd is better than bat because it will
> always set ERRORLEVEL even if it is to zero, so one can reliably determine
> whether a command worked (Git's wrapper on windows is git.cmd and not
> git.bat).
>
> > I've created a first attempt of this implementation, please see the
> attached
> > patch.
>
> Good start.
>
> > +  // TODO fail if command is too long and no file specified
>
> Several of the call sites of BuildCommandLine are constructing
> commands using ninja's $VAR reference/placeholder syntax.  For
> these call sites it is never safe to use a separate cmdFile.
> Fortunately they tend to be for compiler/linker invocations
> that can use the normal RSP_FILE approach.
>
> Instead of adding a cmdFile argument to BuildCommandLine, add
> a boolean (or enum) to indicate whether the commands hold any
> placeholders.  Only when no placeholders are used is it safe to
> activate the new behavior.  When activated, I think it is
> cleaner to use a hash of the command line as the cmdFile name.
> That way when the command changes Ninja will be aware of the
> change and re-run it.
>
> Thanks,
> -Brad
>
> --
Martin

Attachment: 0001-Support-for-many-custom-commands-in-Windows.patch
Description: Binary data

-- 

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-developers

Reply via email to