News:

The new Release 25.03 is out! You can download binaries for Windows and many major Linux distros here .

Main Menu

How to use CMD_NULL on Windows??

Started by stahta01, June 16, 2015, 05:16:47 AM

Previous topic - Next topic

stahta01

Follow up on this old thread 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.

C Programmer working to learn more about C++.
On Windows 10 64 bit and Windows 11 64 bit.
--
When in doubt, read the CB WiKi FAQ. [url="http://wiki.codeblocks.org"]http://wiki.codeblocks.org[/url]

stahta01

#1
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.
C Programmer working to learn more about C++.
On Windows 10 64 bit and Windows 11 64 bit.
--
When in doubt, read the CB WiKi FAQ. [url="http://wiki.codeblocks.org"]http://wiki.codeblocks.org[/url]

stahta01

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.

C Programmer working to learn more about C++.
On Windows 10 64 bit and Windows 11 64 bit.
--
When in doubt, read the CB WiKi FAQ. [url="http://wiki.codeblocks.org"]http://wiki.codeblocks.org[/url]

ollydbg

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

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.

If some piece of memory should be reused, turn them to variables (or const variables).
If some piece of operations should be reused, turn them to functions.
If they happened together, then turn them to classes.

stahta01

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

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.
C Programmer working to learn more about C++.
On Windows 10 64 bit and Windows 11 64 bit.
--
When in doubt, read the CB WiKi FAQ. [url="http://wiki.codeblocks.org"]http://wiki.codeblocks.org[/url]