Hi Guys! I am pretty new at programming and I have a blank spot which bother me. I can write some basic code now. My workflow is: make a command-line tool project in Xcode, add the libraries etc what I need, write the code and unit tests (in C++) and then build the app. After the build I have an app which after a double click does it's job on my computer in Terminal. It's OK.
What I can't see is how to make it something which I could send to client (for now friends of course), submit to App Store etc. For example if I get a job as a freelancer something like this:
"I need an application which get the videostream from my webcam, and highlight every circle object in the image real time using OpenCV."
I can do this, but what should I send to the client if I am a freenlancer? The souce code? The application? A library? I guess it's part of the agreement, but I still don't know which is the usual case?
Top comments (4)
If the client is technical (i.e., can integrate the code into their own projects themselves), then you can just deliver the code (in a github repo for example, or as a zip file, etc).
However, if the client wants the whole thing as a pre-made app in the App Store - there's quite a bit more work that goes into that.
Once you have the library working as a command line tool, then the next step is to use XCode to make a new project with a UI of some sort. There's a lot of tutorials out there about that - so follow one of those to make a simple UI first. Then, you should just be able to drop in your code to do the actual algorithm.
Thank you very much Chris! Some edge case came into my mind: what if the client would like to use my app on Mac and Windows as well? I should write the same app in Swift and in C# too or is there something in-betweener solution in case like this? Is it a common practice to use different language to the UI and the to actual algorithm? For example if my code is in C++ does it make sense to make the UI in Swift or it's a no-no?
C++ can be compiled to both Windows and Mac (usually, with some work perhaps), and you can make a library for it that can be used on either.
Then, you'll have to create a UI for each. You can either do that by making a separate one for Mac (in swift), and Windows (in C#), or by trying one of the variety of ways that you can do it on both (like Electron).
You'll have to compile your C++ to a binary for Mac, and a binary for windows, but you should be able to reuse most of that code for each.
Does that help? I'm a web and mobile dev mostly - so I can't point to great tutorials, etc - but I do know that if you can compile your C++ code once for Mac, and then once for Windows - then you should be able to use that as a library from whatever UI you choose to build.
Thanks again Chris, yeah that helped a lot! Now I will try to implement this with a simple project :)