Executing command-line immediately from Xcode — Erica Sadun

Executing command-line immediately from Xcode — Erica Sadun


I acquired pulled into a type of conversations the place I find yourself saying, “High-quality, I’ll put up a publish about it” and that is the publish. Sure, you can take a look at and run command-line apps immediately from Xcode however I just about by no means do. It’s a ache with few advantages. That mentioned, right here’s the way you do it.

Arguments

Let’s say you want arguments. Open your scheme (⌘<) and choose the Run > Arguments tab. Add the arguments you need to move on launch separately. Double-click to edit any argument:

Mandatory Access & Authorization Minimum Baseline Security Standard (mbss) for Rhel

The arguments are vended byCommandLine.arguments. Both depend the array or use CommandLine.argc to learn the way many arguments you’re coping with.

print(CommandLine.arguments)
print(CommandLine.argc)

Counter-intuitively, Xcode doesn’t mechanically quote the arguments for you. This produces 5 arguments, not three, or six when you embody the command itself:

["/Users/ericasadun/Library/Developer/Xcode/DerivedData/Test-gwehknnihlcsiucsovtbnlrdtfun/Build/Products/Debug/Test", "first", "second", "third", "fourth", "fifth"]
6

And what do you count on from the next?

You get this when you run immediately in Xcode’s console:

["/Users/ericasadun/Library/Developer/Xcode/DerivedData/Test-gwehknnihlcsiucsovtbnlrdtfun/Build/Products/Debug/Test", "first", "several items at once", "third"]
4
Program ended with exit code: 0

However when you set your code to execute utilizing Terminal:

Launching: '/Customers/ericasadun/Library/Developer/Xcode/DerivedData/Take a look at-gwehknnihlcsiucsovtbnlrdtfun/Construct/Merchandise/Debug/Take a look at'
Working listing: '/Customers/ericasadun/Library/Developer/Xcode/DerivedData/Take a look at-gwehknnihlcsiucsovtbnlrdtfun/Construct/Merchandise/Debug'
3 arguments:
argv[0] = '/Customers/ericasadun/Library/Developer/Xcode/DerivedData/Take a look at-gwehknnihlcsiucsovtbnlrdtfun/Construct/Merchandise/Debug/Take a look at'
argv[1] = 'first'
argv[2] = 'a number of'
["/Users/ericasadun/Library/Developer/Xcode/DerivedData/Test-gwehknnihlcsiucsovtbnlrdtfun/Build/Products/Debug/Test", "first", "several"]
3

Xcode’s Loopy Terminal Choice

For those who’re operating something with direct key enter (utilizing POSIX termios/uncooked mode) or curses, operating within the console doesn’t work. So Xcode gives a strategy to run these utilities within the terminal. Go to Run > Choices and scroll all the best way down.

This characteristic is buggy as hell, produces ridiculous quantities of extra textual content (see this), can take a major time to launch, and much more time for Xcode to appreciate the method has completed. It’s inconceivable to make use of with paths that use areas (“warning: working listing does not exist: '/Volumes/Kiku/Xcode/Derived'“).

I don’t prefer it. I don’t use it. But it surely exists.

Sane Command-Line Execution

Except you’re coping with issues like automation and such, you possibly can check out your compiled command-line apps by dragging your executable from the Merchandise group onto the terminal. This locations the trail to your construct on the immediate. Kind out your arguments and press return:

Nonetheless, I choose to make use of a Copy File construct part. Choose your Goal > Construct Phases, click on plus (+) and add the executable. (I exploit absolute path and disable “solely when putting in”.) This allows you to set up on to  commonplace places like /usr/native/bin or ~/bin, or when you don’t need to place it there till it’s secure and prepared for deployment, you should use a growth folder:

Assuming your vacation spot is in your shell’s path, begin a brand new shell for the executable to be picked up the primary time. After that, you possibly can compile and run as you want.

author avatar
roosho Senior Engineer (Technical Services)
I am Rakib Raihan RooSho, Jack of all IT Trades. You got it right. Good for nothing. I try a lot of things and fail more than that. That's how I learn. Whenever I succeed, I note that in my cookbook. Eventually, that became my blog. 
rooshohttps://www.roosho.com
I am Rakib Raihan RooSho, Jack of all IT Trades. You got it right. Good for nothing. I try a lot of things and fail more than that. That's how I learn. Whenever I succeed, I note that in my cookbook. Eventually, that became my blog. 

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here


Latest Articles

author avatar
roosho Senior Engineer (Technical Services)
I am Rakib Raihan RooSho, Jack of all IT Trades. You got it right. Good for nothing. I try a lot of things and fail more than that. That's how I learn. Whenever I succeed, I note that in my cookbook. Eventually, that became my blog.