Xmake and C/C++ Package Management

Xmake is a lightweight cross-platform build tool based on Lua. A previous article provides a detailed introduction to Xmake and the build system.

If you already have a general understanding of Xmake, you will know that it is not only a build tool, but also has built-in support for C/C++ package management. We can also understand Xmake as:

Building Reproducible Development Environment

One of the development team’s biggest challenges is having a consistent and reproducible environment between team members. The bigger the team or more teams working on the same project codebase, the issue is amplified. Different languages try to manage dependencies using a specifically inbuilt language-specific package manager.

For example, Python is using by de-facto pip as a Python package installer that is using Python Package Index repository. All dependencies can be declared in the requirements.txt file and installed with pip install -r requirements.txt Pypi is limited in managing consistent Python packages and versioning. New Python package managers try to solve the limitation of the pip like Data Science oriented Anaconda or Poetry that bring multiple improvements over pip with dependency management and packaging. Poetry is arguably Python’s most advanced dependency management option today by using a configuration file in toml format and generating project scaffolding, locking dependency in the *.lock file.

Package Management in Go

Package management is one of the things Go has always missed. One of the major drawbacks of the previous (pre 1.11) go get was lack of support for managing dependency versions and enabling reproducible builds. The community has developed package managers and tools like Glide, dep, and many others serving as de-facto solutions for versioning dependencies.

“I use go get for production builds.” — said no one ever.

Working of Package Manager in Linux

Package Manager is used to automating the process of installing, upgrading, configuring, and removing programs. There are many Package Manager today for Unix/Linux-based systems. Package Managers are available in different languages like python, ruby, etc. 

What Is a Package?

A package is simply an archive that combines all the libraries and binaries, configuration and all the dependencies required to install the programs (i.e application, software or languages) 

DevOps Implementation For C and C++ Projects

Check out how the Conan Center brings DevOps to C and C++

C and C++ communities are sitting on the world’s most extensive codebases. Many algorithms written and shared online are done in C. They’re necessarily the “universal languages” of programming languages. With an estimation of 4.5 million C++ programmers and 2 million C programmers, C and C++ are two of the world’s most popular programming languages. With an over 40-year legacy, C and C++ have been used to build every type of application, from embedded systems to mobile apps. C and C++ are also among the top five most popular languages and emphasizes the influence they still have today.