What is Podfile.lock in our Xcode projects and why is it used? - swift3

I am a beginner in using pods in Xcode projects. I have been confused by Podfile.lock. I want to update a framework "OBJECTMAPPER" to 2.0 to make it compatible with Swift 3. However it doesn't.
Why doesn't it update to the latest version (2.0)? Does it have anything to do with Podfile.lock? Which is as follows ->
and why is it used?
Update: The Podfile

Just In case any one is wondering the same i did 2 years ago. I will tell a small description. When u install a library with cocoapods you will be generated a podlock against it with the version which it(The library) is installed. For example suppose you have library named "XX" and you install it with pods. if the latest version of "XX" is 2.0.0, then u will be installed the latest version and podfile.lock is locked with -(XX - (2.0.0))
Suppose if a new version is released of that library and u dont want it's updates to be installed in our project then use pod install.. This will only install any new library in podfile and will not affect your existing library by updating them to latest code.("This prevents some functions of that library which you have used to not disappear if they have depricated it").This is monitored by podfile.lock
If you want to update "XX" to a newer version in future use pod update for that library

pod install will not update ObjectMapper to the latest version because there is no reason for it to do so. ObjectMapper is included as a dependency to UberRides and version 1.5.0 satisfies the requirement which is 1 or above.
In order to force an update you can add ObjectMapper to the podfile with the required version, e.g.
pod 'ObjectMapper', '2.0'

Related

Can i update libpqxx, can i upgrade or do i need to flash my computer to reinstall a newer version?

I have checked out and built version 6.4 of libpqxx from https://github.com/jtv/libpqxx, how can i now install versoin 7.1.1? Can i remove the current version and how?
Can i have both versions installed, and how do i specify which one when linking in a compiler command?
I tried to read the docs, but could not get any info i could use.
Or, do i need to flasch my BeagleBoneBlack and reinstall everything from scratch?

VCPKG: list available versions of a package

For example, how can I list available GDAL library versions ?
They are not listed on VCPKG packages website neither by vcpkg search gdalcommand.
Try this! it is a quick fix until vcpkg supports pkgs version listing. https://github.com/hamaney/vcpkg_version_finder.
on a related note:
to look up a package by name and get the latest available version of it use vcpkg search <pkg name>
UPDATE SEP-11-2021:
I just found out that you can use the experimental flag x-history. for example vcpkg x-history <pkg name> (you might need an internet connection the first time you run this command).
You can use https://vcpkg.link/ in order to find all the versions of a package and when it got released (e.g. https://vcpkg.link/ports/gdal/versions for gdal). Besides, you can also see from which version a given feature has been introduced by looking at the overview of a package.
Disclosure: I'm the creator of the platform.

VCPKG versions of packages

is there possibility how to install older version of packages by using vcpkg install?
I found that there is a file in versions/baseline.json, but even if I change the version of the package there, it always install the newest one.
Maybe https://github.com/microsoft/vcpkg/blob/master/docs/specifications/versioning.md is what you are looking for. Be aware you need to pass an additional flag to vcpkg to activate that feature. It also only works in manifest mode and not in classic mode.

Three instances of each openCV 3.1.0 library

I was able to install and build openCV following the instructions here (http://charliegerard.github.io/blog/Installing-OpenCV/). But after successfully creating the dynamic libraries I noticed in the lib directory there are 3 instances of each library named in the following format:
libopencv_LibName.3.1.0.dylib
libopencv_LibName.3.1.dylib
libopencv_LibName.dylib
Screenshot of the libraries
My next step is to single out only the header files and libraries I need for my project, and I'm not sure if I really need all 3 instances of every library in use. Why does make create all these extras? And which ones do I need?
Additional Info:
OS: OSX El Capitan
IDE: Xcode 7.3.1
When you build the opencv library it creates the actual *.dylib binary (libopencv_LibName.3.1.0.dylib) that contains the release, the major, and minor version. (Release = 3, Major = 1, Minor = 0). This allows you to have a dynamic style of linking to a specific version of the library. (For example, opencv often is not completely compatible between release versions. (From 2.x.x to 3.x.x), however it often is compatible between major/minor versions.(3.0.x to 3.1.x) )
By linking to the 3.1.0 version, you are locking in on requiring that specific version of the libary. (If you update opencv, it will still be using openCV 3.1.0).
However if you link to the 3.1 version, it is only caring about the Release and Major version, but will allow minor version updates. (Currently the 3.1 is a symlink to 3.1.0, but if you installed 3.1.1, it would now reference the 3.1.1 library.) I generally find it best to link to this one as it will allow you to update for bug fixes, but will not break any functionality.
Finally there is the version-less symlink, this one will always reference the latest version of opencv you have installed. Currently it references 3.1.0, but if you installed 3.1.1 it will now reference 3.1.1. This would not be bad, but if you were to install 4.0.0, it would now be referencing this binary and likely break some of the API.

Can I use biicode for C++ on ubuntu 14.04 with Cmake 2.8.12.2?

I just downloaded biicode and tried to follow the getting started instructions but received an error about the Cmake 3.0 or higher being required.
However, ubuntu 14.4 uses "cmake version 2.8.12.2"
Is there a way to use biicode with 2.8 or am I stuck installing the newer version of CMake?
TIA!
No, biicode requires cmake > 3.0. There is a setup command that helps installing it:
$ bii setup:cpp
This will install CMake >3.0 in /home/user/biicode_env, and add it to the path, so it doesnt interfere/overwrite your current 2.8 installation. Biicode needs that executing "cmake" in the console actually uses 3.0, so it should be first in the path. You can manage it very easily in two different ways, with a symbolic link (/usr/bin) that you redirect as needed or adding/removing an entry in the path before executing biicode.
This is a different thing, but I woiuld like to say that I have migrated existing projects from cmake 2.8 to 3.0 without any problems, and 3.0 runs great and has useful new features. So I would recommend regular cmake users to upgrade if possible.
No, there isn't any way to change this requirement because internal biicode CMake has features, like the use of INTERFACE libraries, which are only available on CMake 3.0 or later. However, don't worry about upgrading CMake version, this one always keeps a exhaustive compatibility with older versions ;)