Getting a .app instead of .ipa as final artifact from cmake - ipa

TL;DR
My question is : How can CMake be used to build an IPA? currently we are getting a .app artifact as final product, Does CMake have the required commands or targets to do this ? Earlier we were using XCodebuild -exportArchive option for same.
I am trying to port an iOS application from Qt5 (build with Qmake) to Qt6 (build with Cmake), and I have successfully completed compilation and linking stages.
I am getting an archive as App.app instead of an expected App.ipa
commands used to build app
cmake -H. -Bbuildxcode -DCMAKE_PREFIX_PATH=/Users/cybercraft/Qt/6.2.4/ios -DCMAKE_TOOLCHAIN_FILE=../ios.toolchain.cmake -DPLATFORM=OS64 -DENABLE_BITCODE=NO -GXcode
cmake --build buildxcode
I have a bash script that does build an ipa with Qt5.12.11, I've compared the xproj files (from both bash build and cmake build) side by side for every setting, didnt find any difference for packaging/signing.
    Building ipa directly from command line using XCodebuild -exportArchive didnt work as well, producing same .app instead of .ipa.
I'm new to cmake and iOS development, am I missing something critical?
I have added my CMakeLists.txt file here [ https://pastebin.com/VD2DxHNi ]
ios.toolchain.cmake is taken from [ https://github.com/leetal/ios-cmake ]
My info.plist file here [https://pastebin.com/qcrd6Fdy ]
My export.plist file here [ https://pastebin.com/eJiVnwFt ]
screenshot of compilation process "with build successfull" [ https://imgur.com/a/97PCXeZ ]
Build environment Details:
Qt version: 5.12.11
qmake version: 3.1
MacOs version: 12.6 (Monterey, M1 2020)
Xcode version: 14.0.1 (14A400)
xcodebuild version: 14.0.1 (14A400)
cmake version: 3.24.2
boost version: 1.80.0
I've already followed few online suggestions and solutions mentioned in forums, but none of them worked, if you want me to add thoses, I'll add them too, just let me know if it helps.
although my question could possibly be a duplicate of Creating an .ipa from .app for iOS using CMake still hoping to find some solutions.
Xcode creates archive instead of IPA and
Get ipa from Xcode didnt help as well.
Regards.

Related

Unable to find msbuild after building Mono 6.10 on linux

Yeah there's a need for me to build MS project on Linux.
I've download Mono from their offical website and built on Ubuntu 16. But when I want to use msbuild ,I found this tool didn't exist.
After my "make && make install", the folder of msbuild in Mono is:
hololqq#hololqq-virtual-machine:/opt/mono/lib/mono/msbuild$ ls
Current
Compare to the Mono installed by using apt-get , the folder should be:
hololqq#hololqq-virtual-machine:/usr/lib/mono/msbuild$ ls
15.0 Current
It's strange because the document : https://www.mono-project.com/docs/about-mono/releases/6.10.0/ has said that they just update msbuild:
19662 - [2019-12] Bump msbuild to track mono-2019-12
So I'm confused with this situation. Is anything else I forget while building? Or just the source codes of Mono didn't contain msbuild? Appericiate for your any suggestion.
PS:I have used monodevelop and xbuild. And monodevelop isn't easy to build from source code, and xbuild has some bugs while compiling VS peojects.
Update:
Finally still has no useful way. I use xbuild instead(it has a bug that you need to run it twice, because the first build won't success).

Couldn't build release version of iOS project with hosted mac agent Azure pipeline

Getting these two errors when I try to build the iOS project with hosted mac agent.
lipo : error : unable to find utility "lipo", not a developer tool or in PATH [/Users/runner/runners/2.158.0/work/1/s/src/LOT/iOS/LOT.iOS.csproj]
MTOUCH : error MT5306: Failed to create the a fat library. Please review the build log. [/Users/runner/runners/2.158.0/work/1/s/src/LOT/iOS/LOT.iOS.csproj]
Have selected the xcode version 10.2.1
I changed this based on the solution given in this reference,
https://forums.xamarin.com/discussion/31493/mtouchtask-error-mt5206-failed-to-create-the-a-fat-library-please-review-the-build-log-mt5206
Some other links suggest this could be due to the license and tried sudo xcodebuild -license accept Still it doesn't work. Any leads?
Update:
After selecting the xcode 11.1, lipo : error : unable to find utility "lipo", not a developer tool or in PATH [/Users/runner/runners/2.158.0/work/1/s/src/LOT/iOS/LOT.iOS.csproj] error is resolved.
Running the command in a bash script task resolved my problem.
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
Basically it selects the xcode version 10.3.

How to fix "could not compile dependency :bcrypt_elixir" error on Windows?

I'm on Windows and I am trying to install the bcrypt_elixir module.
I get the following error:
$ mix phx.server
==> bcrypt_elixir
could not compile dependency :bcrypt_elixir, "mix compile" failed. You can recompile this dependency with "mix deps.compile bcrypt_elixir", update it with "mix deps.update bcrypt_elixir" or clean it with "mix deps.clean bcrypt_elixir"
** (Mix) "nmake" not found in the path. If you have set the MAKE environment variable,
please make sure it is correct.
Here is a terminal screenshot of the error:
Here is my deps function from mix.exs:
defp deps do
[
{:phoenix, "~> 1.3.0"},
{:phoenix_pubsub, "~> 1.0"},
{:phoenix_ecto, "~> 3.2"},
{:postgrex, ">= 0.0.0"},
{:phoenix_html, "~> 2.10"},
{:phoenix_live_reload, "~> 1.0", only: :dev},
{:gettext, "~> 0.11"},
{:cowboy, "~> 1.0"},
{:comeonin, "~> 4.0"},
{:elixir_make, "~> 0.4.1"},
{:bcrypt_elixir, "~> 1.0"}
]
end
I faced same problem during distillery setup with my elixir project.
Installing package resolve issue as shown below.
I found bcrypt_elixir need to install make and build-essential from Elixir Forum.
platform:- ubuntu
$ sudo apt install make
$ sudo apt-get install build-essential
For Visual Studio 2019 (VS2019) :
cmd /K "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
bcrypt_elixir uses Windows' NMake (cf. bcrypt_elixir's Makefile.win).
It seems like you don't have NMake installed.
From NMake's documentation:
NMAKE is included when you install Visual Studio or the Visual C++ command-line build tools. It's not available separately.
So you need to download Visual Studio in order to get NMake. Then you should be able to compile bcrypt_elixir.
If you already have NMake, make sure nmake.exe is located under a directory from your path.
In windows 10, you must add NMAKE to your path
After that you can run mix deps.compile until see message like this:
After that you must run cmd as suggest from nmake:
cmd /K "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
Run this command on cmd and run mix deps.compile normarly.
Actually looking at this a bit closer, since you're running Cygwin and trying to build bcrypt under Cygwin, nmake doesn't even enter into the question. You need to install make into Cygwin. Re-run the cygwin installer, select the Devel category and then under Devel look for make.
EDIT:
Ok, so if I had to guess I'd say either you need to
a.) Stop trying to build everything under the Cygwin prompt--if bcrypt_elixir is detecting that it's on Windows, it's going to look for nmake and nmake isn't part of Cygwin.
You didn't specify how you're looking for nmake but if I were you I'd try this from the C:\Program Files (x86) directory.
dir /s nmake.exe
Mind you run that from a Windows cmd prompt--it won't work from the Cygwin shell!
b.) Somehow set bcrypt_elixir to think it's on Linux so it looks for make (which is not the same as nmake).
Basically I think the simplest answer would be to try to run mix phx.server from a normal Windows cmd prompt and then go from there. Or if you need Linux, then install virtual box and put a Linux VM on the machine and proceed that way.
I found that, running on Windows, it was the latest version of erlang OTP, version 21,
that was causing the problem. I uninstalled this version and went for version 20 (which installs erlang 9.3 and latest version of Elixir then looks for this version when being compiled) and then bcrypt_elixir compiled al
This answer is for anyone running elixir directly on Windows, and using VS Code with the ElixirLS extension. These instructions should work for other Visual Studio versions besides 2022, just change the path to vcvars64.bat.
Install Visual Studio 2022.
Use the Visual Studio Installer to install the optional Desktop Development with C++ workload. This contains native C/C++ build tools, including nmake.exe.
Create a script in your home directory (C:\Users\UserName) ExVsCode.bat with the following (%1 is how you access the first command line argument, which will be the project directory):
cd %1
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat
code .
When you want to work on an elixir project in VS Code, open a command prompt (CMD.exe), move to your home directory if you're not there already, and run ExVsCode.bat C:\Users\Username\PathToProject to open VS Code with all the build tools available to ElixirLS and the integrated terminal.
Credit to exqlite documentation for some of this.
Note: the original question may concern Cygwin, but many people will find this answer who are running elixir directly on Windows, and a closed question that doesn't mention Cygwin or WSL already points here.

OpenCV cmake error

I am new to OpenCV with CMake and I am using it on Windows for the first time and facing some problem which I have mentioned below.
CMake Error at CMakeLists.txt:10 (find_package):
By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "OpenCV", but
CMake did not find one.
Could not find a package configuration file provided by "OpenCV" (requested
version 3.1.0) with any of the following names:
OpenCVConfig.cmake
opencv-config.cmake
Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set
"OpenCV_DIR" to a directory containing one of the above files. If "OpenCV"
provides a separate development package or SDK, be sure it has been
installed.
Can anyone suggest me a step-by-step solution for this.
Use vcpkg.exe to build open-source windows projects , including OpenCV, on the fly. Download vcpkg from github and build the vcpkg.exe. CMake download and cross-compiling( if any) will be perform automatically. Open Powershell window in administrative mode and type .\vcpkg install opencv . After successful install type .\vcpkg integrate install on the Powershell command prompt. Your project is ready and the libraries will be automatically inserted in your project. You can choose x86 or x84 or static/dynamic built.

How to use appimage to deploy qt5 application

I'm using appimage http://appimage.org to pack my application in a standalone excutable.
I'm doint this on debian testing lenny.
My application uses a lot of opensource libraries (qt, python pythonqt fftw hdf4/5 gsl netpbm qwt) and everything was ok using Qt4. I can compile my app on debian and create an appdir image that run smoothly on mint (with xfce).
This stopped working when I switch to Qt5.
Now the appimage runs on debian, but not on mint, I get this error:
This application failed to start because it could not find or load the Qt platform plugin "xcb".
Available platform plugins are: eglfs, kms, linuxfb, minimal, minimalegl, offscreen, xcb.
Reinstalling the application may fix this problem.
Aborted
Notice that the messege is non-consistent: firts it says I lack xcb and than it maks as available.
I did copied the plugins directory in my app usr/lib tree.
I have xcb installed on host apt-get install libx11-xcb1
My AppRun file looks like this:
#!/bin/bash
HERE="$(dirname "$(readlink -f "${0}")")"
cd "${HERE}/usr/"
export LD_LIBRARY_PATH="${HERE}/usr/lib/:${LD_LIBRARY_PATH}"
export PATH="${HERE}/usr/bin:${PATH}"
export QT_PLUGIN_PATH="${HERE}/usr/lib"
exec "${HERE}/usr/bin/Neutrino" "$#"
cd -
What am I missing?
Many Qt5 applications such as Krita, Scribus, and Subsurface are being distributed as AppImages, so it is definitely possible.
Probably you are missing some components that need to be bundled inside the AppImage. Especially, Qt plugins need to be bundled inside the AppImage for it to work.
See here for an example of a Qt5.5 app being packaged as an AppImage.
Note that it is generally recommended to use an old base system such as CentOS 6 for compiling, because the resulting AppImages will be compatible to more distributions rather than just the latest ones.
If you post a link to your project or open an issue on https://github.com/probonopd/AppImages/issues I can possibly give you more detailed directions.

Resources