Development an application with dependencies in macOS without Xcode - c++

I have a project written in c++ using codelite IDE.
I compiled it windows, Ubuntu and Fedora successfully an I created installers for all of them (for Ubuntu a .deb package and for Fedora a .rpm package).
Recently, I could compile it in my macOS (10.14) an it works perfectly, and want to create a package in macOS (.app or .pkg).
It should be noted that my software has a lot of dependencies such as OpenGL frameworks and wxWidgets libraries and many libraries which I installed through brew and Xcode.
As mentioned my project is in codelite which does not generate a framework or .app package.
What should I do in this step?

Creating a .app bundle on the Mac is a relatively complex process - amongst other things, it has to be signed and notarised, and to do that you need to enroll in Apple's developer program ($99 per year).
So, because of that, I'd recommend creating an Xcode project to to the job. Once you have that, all the steps are automated. You will also be in a position to submit your app to the App Store, should you wish to.
A good way to build installer packages is to use Stephan Sudré's Packages application, which you can get here:
http://s.sudre.free.fr/Software/Packages/about.html
Don't worry that it isn't signed - it's perfectly safe.

Related

Do I need to install Mingw compiler components in Qt installation if i had already installed Mingw in my computer?

I installing Qt open source framework in my window 10 pc. I already downloaded Mingw compiler and installed it to write C/C++. Now I wanna learn QT framework. I using Qt online installer. I choice to download custom compoment. Do I need to selet mingw component to download if i had already installed?
Note that there's not just one MinGW distribution and version out there. You can check out the exact supported version per Qt release at https://wiki.qt.io/MinGW .
Anyhow, if you install the pre-built Qt binaries via the online installer, the matching MinGW version will automatically be installed for you, and will be registered in Qt Creator so that things just work. There is actually no official way to prevent this.

Qt - How to deploy application dynamically on Linux?

I have an application that I built using Qt Creator on Linux and want to deploy it now. However, I don't want to statically build it as I don't want it to be open-sourced. I tried the ldd ./YourExecutable command, however that only lists (and not add) the additional dependencies the application needs in order for it to run. My question is, how do I gather the necessary dependencies without having to individually look for these files? Is there a tool, such as windeployqt.exe on Windows, that I can use on Linux for the same purpose? Or is there a better approach than the one I'm thinking of?
Get Cygwin setup.exe: http://www.cygwin.com/
1.1. Run setup.exe and continue to package selection list.
1.2. Under Devel catagory select tools you need for compiling your source. For
example 'GNU make'.
1.3. Finish installing.
Get linux crosscompilers for cygwin:
"cygwin-gcc-linux.tar.bz2" (68.2 Mb).
md5sum: 340e91a346f5bb17e660db10e43005b8
These compilers are made with crosstool 0.28-rc37. This package contains:
gcc-3.3.4 and gcc-2.95.3 for i386 (glibc 2.1.3) and gcc-3.3.3 for amd64
(glibc 2.3.2).
Note! There is now newer version of GCC avaible with glibc 2.3.2:
"cygwin-gcc-3.3.6-glibc-2.3.2-linux.tar.bz2 (i386, x86_64)".
2.1. Copy 'cygwin-gcc-linux.tar.bz2' to 'c:\cygwin' or install directory which
you selected in setup.exe.
2.2. Open Cygwin shell and change directory to root with 'cd /'.
2.3. Uncompress to Cygwin root with command:
'tar -jxvf cygwin-gcc-linux.tar.bz2'.
Cross-compilers are installed under '/opt/crosstool'. You can use theim
directly or with commands: gcc-linux, g++-linux, gcc-linux-2.95,
g++-linux-2.95, gcc-linux-x86_64 and g++-linux-x86_64.
From: Cross-compiling on Windows for Linux
More info here.
It sounds like you want to use the shared library deployment option:
http://doc.qt.io/qt-5/linux-deployment.html#creating-the-application-package
Then if you wanted to go further than that, you could look into making a .rpm or a .deb .
There are lots of examples of qt projects that are now available on GitHub and have packages made. Usually for prebuilt binaries you need to make one for x86 and a separate one for x64.
Hope that helps.

Stanford CS106B C++ libraries in XCode 4

I'm trying to use the Stanford CS106B C++ libraries, like simpio.h and genlib.h. I'm using XCode 4 (this is a beta version btw) and Mac OS X 10.6. I installed the libraries, but they don't seem to be showing up when I try to create a new project in XCode. Is there something different I should be doing with XCode 4 to get these libraries in?
There's probably a pretty basic solution to this problem, and if it were just a matter of frameworks in iOS, I could definitely get that to work with this version of XCode, but I've not really done this with C++ and XCode before, so I'm stuck.
Update on 7/20/11
I found a link to download the Xcode 2.5 tools as well as Xcode 3.0, both of which are described in the handout. I'm downloading both of them now. Does anyone know if Xcode 3.0 and 4.2 will run fine on the same machine?
Yes, multiple versions of Xcode work fine together. During the install, after the "Select a Destination" screen, you see a screen with the packages that will be installed. Click "Developer" folder to change to a custom location for each different Xcode version. The other tools (system and UNIX) cannot be moved.
After you have Xcode installed, just install your libraries in the usr/lib folder under your custom Xcode folder, and you should be good to go.

G++/GCC: how to make your app tell OS to download libs it needs into system?

So for example I am creating some app that uses boost or openCV and on my developer machine all that is installed so app compiles without any problem. But I wonder how to make app tell OS to download libs I use on first run? Is it possible? (sorry - I am linux noob)
This is what package managers are for. What you do is you compile your project, and then you build a package (e.g. .deb or .rpm), using the appropriate tools. While doing so, you can specify where the various files in your package should go, but also which other packages your package relies on. These are known as "dependencies", and package managers like apt and rpm are pretty good at resolving them.
Here's the official debian guide to making packages to give you an idea:
http://www.debian.org/doc/maint-guide/
Alternatively, you can just distribute your program as-is and list the dependencies in the install instructions; users will then have to manually install them through their package manager before running your program.

C++ IDE along with minimal Linux

My intention is to have a C++ integrated development environment on Linux platform without any pain or extra configuration or building binaries from source, etc..
I found that CodeBlocks Studio has readily available RPMs for Fedora, Suse and Mandriva.
Can I arrange minimal ISOs (50-100 MB) for these distributions?
Fedora already has CodeBlocks and other popular IDEs such as Anjuta and KDevelop included as official packages. If you need a bootable media with your favourite IDE, spin your own Live CD with a custom set of packages.
http://fedoraproject.org/wiki/How_to_create_and_use_a_Live_CD
Can I arrange minimal ISOs (50-100 MB) for these distributions?
The very idea of IDEs — the more so graphical ones — goes against "minimal". I am afraid you won't be getting below 300 MB.