Packaging C/C++ Projects
Using vcpkg package manager to install packages?
Not at this point
End goal
- Since the end product in the C/C++ world is a complete bundled binary executable and not a set of text files like a Python, JavaScript or Web app management of source file packages has not been the issue for C and C++ that it has become for the interpretive languages
- Source package management in the C/C++ world has only been an issue for development teams
- The standard practice in the past has been either
- Manually download the required source collections from source repositories like as GitHub, team foundation server, etc.
Or
- Use the platform specific installer bundled with the SDKs of choice, which were generated by the SDK’s creator.
- In the Windows world this has typically been
msinstall - In the Linux/UNIX world
a gziped tarball - In the Apple World ?
In Visual Studio
- For compiled binary packages the primary package manager on Windows has been
Nuget, which interact with a binary repository of the same name. ANuget packagermanager has been preinstalled in the last several releases of Visual Studio and is also a preinstalled VSCode as a extension. In the Linus/Unix world the most common distribution method for binary packages is againgziped tarballs - I was not previously aware of the
vcpkgproject. Based on a cursory examination, it appears to be a recent Microsoft sponsored/directed Open Source Project to develop a platform agnostic package manager for C/C++ code similar to Python world’snpmutility
Potential problems
- At present I see three problems with its use
- A port of a package to its conventions is required before the package can be managed by it
- A moment its developers are in the process of converting its package description conventions from proprietary control file format to a JASON manifest file format.
- At this point in time the tool does not appears to have obtained much traction with either the open source community or commercial package vendors
- These issues are likely to severely limit number of source packages which can be obtained via it.