Code::Blocks Forums

Developer forums (C::B DEVELOPMENT STRICTLY!) => Development => Topic started by: stahta01 on June 16, 2015, 05:16:47 AM

Title: How to use CMD_NULL on Windows??
Post by: stahta01 on June 16, 2015, 05:16:47 AM
Follow up on this old thread http://forums.next.codeblocks.org/index.php/topic,11278.0.html (http://forums.next.codeblocks.org/index.php/topic,11278.0.html)

I am looking at doing some pre and post commands.

And, I have NOT figured out how to use $(CMD_NULL) in CB in a way that does NOT cause an error

In Pre-build steps

CMD /C dir > NUL


Gives this when ran

Running target pre-build steps
CMD /C dir > NUL


In Pre-build steps

CMD /C dir > $(CMD_NULL)


Gives this when ran

Running target pre-build steps
CMD /C dir > cmd /c NUL
File Not Found



Tim S.

Title: Re: How to use CMD_NULL on Windows??
Post by: stahta01 on June 16, 2015, 05:24:50 AM
I am thinking this line


m_Macros[_T("CMD_NULL")]  = cmd + _T("NUL");


should be instead

m_Macros[_T("CMD_NULL")]  = _T("NUL");


in file macrosmanager.cpp.

Edit: Added git formatted patch file.

Tim S.
Title: Re: How to use CMD_NULL on Windows??
Post by: stahta01 on June 16, 2015, 06:24:34 AM
I am thinking these two macros would be useful.

CMD_CP_UPDATE is to copy files only if file is newer.
CMD_IGNORERR is to reset the OS error value to the no error value.

I have only tested them on Windows 32 bit at this time.

I tested them using these pre build steps

CMD /C dir
$(CMD_MKDIR)  "a/b/c" > $(CMD_NULL) $(CMD_IGNORERR)
$(CMD_CP_UPDATE) *.cbp a


Attached Git formatted patch.

Tim S.

Title: Re: How to use CMD_NULL on Windows??
Post by: ollydbg on June 16, 2015, 04:37:08 PM
Quote from: stahta01 on June 16, 2015, 05:16:47 AM
Follow up on this old thread http://forums.next.codeblocks.org/index.php/topic,11278.0.html (http://forums.next.codeblocks.org/index.php/topic,11278.0.html)

I am looking at doing some pre and post commands.

And, I have NOT figured out how to use $(CMD_NULL) in CB in a way that does NOT cause an error

In Pre-build steps

CMD /C dir > NUL


Gives this when ran

Running target pre-build steps
CMD /C dir > NUL


In Pre-build steps

CMD /C dir > $(CMD_NULL)


Gives this when ran

Running target pre-build steps
CMD /C dir > cmd /c NUL
File Not Found



Tim S.
Hi, Tim, the above code shows that "$(CMD_NULL)" should be replaced to "NUL" under Windows, not "cmd /c NUL", right?
So, this is a good contribution as I can see.

Title: Re: How to use CMD_NULL on Windows??
Post by: stahta01 on June 16, 2015, 05:02:23 PM
Quote from: ollydbg on June 16, 2015, 04:37:08 PM
Quote from: stahta01 on June 16, 2015, 05:16:47 AM
Follow up on this old thread http://forums.next.codeblocks.org/index.php/topic,11278.0.html (http://forums.next.codeblocks.org/index.php/topic,11278.0.html)

I am looking at doing some pre and post commands.

And, I have NOT figured out how to use $(CMD_NULL) in CB in a way that does NOT cause an error

In Pre-build steps

CMD /C dir > NUL


Gives this when ran

Running target pre-build steps
CMD /C dir > NUL


In Pre-build steps

CMD /C dir > $(CMD_NULL)


Gives this when ran

Running target pre-build steps
CMD /C dir > cmd /c NUL
File Not Found



Tim S.
Hi, Tim, the above code shows that "$(CMD_NULL)" should be replaced to "NUL" under Windows, not "cmd /c NUL", right?
So, this is a good contribution as I can see.

Correct, it is what I think it should do; in order that what it does matches what Linux does.

Edit: I am trying to figure out how to write post/pre build steps that are the same for Windows and Linux.

Tim S.