CMake

(12)
4.4 out of 5 stars

CMake is a family of tools designed to build, test and package software. CMake is used to control the software compilation process using simple platform and compiler independent configuration files. CMake generates native makefiles and workspaces that can be used in the compiler environment of your choice.

Work for CMake?

Learning about CMake?

We can help you find the solution that fits you best.

Compare CMake to Similar Solutions

CMake Reviews

Ask CMake a Question
Write a Review
Filter Reviews
Filter Reviews
  • Ratings
  • Company Size
  • User Role
  • Industry
Ratings
Company Size
User Role
Industry
Showing 12 CMake reviews
LinkedIn Connections
CMake review by <span>Trevor H.</span>
Trevor H.
Validated Reviewer
Review Source

"the non-elegant standard for cross-platform builds"

What do you like best?

You thought writing software was hard? Try getting it to build and run on all kinds of different devices and operating systems. This is where CMake shines. It's currently the best build system out there for cross-platform development. Getting software to work on Windows, Mac, and the various flavors of linux is still no easy task, but CMake is the answer from the build perspective.

It also has a big community and tooling support has been growing rapidly.

You'll be able to find some kind of IDE support guaranteed. Visual Studio / Jet Brains.

The support was added recently, but you should be able to use it in production.

What do you dislike?

Terrible syntax, and very slow start up times. Let me begin with the start-up times. We actually had to move away from CMake because our code base got so large that the initial parsing and book-keeping of CMake was taking way too long. We'd wait 5 minutes just to have CMake tell us that everything was already built. Maybe there were work-arounds for this, but overall we decided to switch to the big hitters (buck, blaze, bazel, ninja).

The syntax is bad but most people just shrug and say, "hey as long as I can get my software built".

The thing is though, that eventually you'll want to mix languages, mix compilers, do debugs, releases, doc generation, special test artifacts, and the syntax of Cmake becomes a hindrance. Other languages let you build rules in a python/groovy like syntax, and this is key. The language of a build system is more important than people first realize, and kludging together your build with a hacky macro language becomes a deal breaker.

Recommendations to others considering the product

If you're working in a small project (say less than 5,000 files), CMake is a good choice.

Regardless of what operating system you're developing on, and regardless of your targets, CMake is a good choice. It has a great community. If you have issues, there are plenty of people to help answer questions. If you are only on linux, mixing languages, and your codebase is very large, take a look at some of the build systems that have come out of Facebook / Google instead.

What business problems are you solving with the product? What benefits have you realized?

Again, CMake solves the problem of cross-compilation through consistency of single build files.

Its pretty simple to take a working CMake example and roll with it. The barrier of entry to using CMake is low, but the difficulty increases as you attempt to do unique and novel things within your software build. Yet, I'd still say that CMake is much easier than writing raw Makefiles. CMake provides a hint of confidence to users in the open source community as well. I'm much more willing to contribute to a project if I see Cmake, as apposed to raw makefiles (or no build files at all).

Sign in to G2 Crowd to see what your connections have to say about CMake
CMake review by <span>Subhendu M.</span>
Subhendu M.
Validated Reviewer
Verified Current User
Review Source

"The gold standard build tool for most projects "

What do you like best?

CMake ties every build tool together with a glue, be it for make for linux or mingw-make/vs for windows. No more dependency errors, Has in-built os specific macros to search for libraries needed to compile. Has a nice gui for those who need it. Spits out errors in a graceful manner. Can specify which version of a lib to use, minimum cmake version supported etc..

What do you dislike?

Frankly, there isn't much to dislike about cmake. CmakeLists.txt can be streamlined a bit, easier command line switches, that is all.

Recommendations to others considering the product

Give it a go, seriously, It is so simple and fluid and user friendly that one simply can't go wrong with cmake.

What business problems are you solving with the product? What benefits have you realized?

Since the years we have switched to cmake, build process has become a lot more streamlined. As we have multiple OSes ranging from Windows to ubuntu-server to RHEL and some tools needed to be built for all of them. Now, only one os independent cmakelists.txt can generate build files for those OSes. As a friend of mine said, 'before cmake, we had to use make and got thousands of dependency errors, now stuff works.'

What Other Continuous Delivery solution do you use?

Thanks for letting us know!
CMake review by <span>Ghada B.</span>
Ghada B.
Validated Reviewer
Verified Current User
Review Source

"The great Build framework for c++ programmer"

What do you like best?

Qt Creator presents a lot of interesting features that I found useful:

- It is a build system generator.

- It is cross-platform, free and open-source software

- Requiring C++ compiler on its own build system

- Generates projects for many different IDEs.

- CMake has its own scripting language that runs on all platforms that CMake targets.

- It is used in conjunction with native build environments such as make, Xcode, and Microsoft Visual Studio.

- Supports outputting to projects like Code::Blocks, Xcode, etc.

- Easy to use and work with.

- stable.

What do you dislike?

I can't really find anything that i dislike. Qt Creator is fulfilling all my needs as for now. Maybe, the only thing that bothered me was the documentation is not good and need some improvement. Apart from that, everything else was fine.

Recommendations to others considering the product

I recommend CMake for anyone who wants to build c++ projects, It is is a great way to manage multiple projects and updating them easly.

What business problems are you solving with the product? What benefits have you realized?

I am currently working with CMake, I used it to plain Makefile and generate configuration files to ease the process of building and updating my c++ projects. The build project contains a CMakeLists.txt file in every directory that controls the build process.

CMake review by User
User
Validated Reviewer
Verified Current User
Review Source

"Easy-to-use deployment system"

What do you like best?

CMake is easy to begin with compared to GNU autotool chains, just follow the official instructions. You could find library and add the include and linking directories with just one line. CMake can even download / compile / install dependencies automatically.

What do you dislike?

Although CMake is easy to begin with, CMake does lots of tricks, which sometimes make its behaviors unpredictable. You have to be very careful and follow the official documents closely to avoid some annoying problems. But for most projects we do not have to use these fancy features, CMake is still the only deployment system that I use.

Recommendations to others considering the product

Use CMake instead of GNU autotool chains if this is your in-house code.

What business problems are you solving with the product? What benefits have you realized?

depolyment system for in-house code.

CMake review by <span>Connor H.</span>
Connor H.
Validated Reviewer
Verified Current User
Review Source

"Painful but powerful!"

What do you like best?

I love the format of the configuration files, they're fairly down to earth and look somewhat like the code I'd be writing whilst using CMake anyway so it's got that going for it. Configuring it once you get the hang of it is a breeze and it has strong support from the communities which rely on it so you can feel secure knowing that you'll be able to rely on it for a long time.

What do you dislike?

I'm not a huge fan of the man-esque online documentation, for people who aren't familiar with *n*x man pages a simple search for how to do something could turn into a witch hunt for something which turns out to be a single line. It's intimidating for people looking to get into using software like it really.

Recommendations to others considering the product

I would highly recommend checking out websites like StackOverflow for nifty snippets that you can reuse. If you use an IDE with snippet support (such as CLion by JetBrains) then you can add these snippets as templates so you simply type a trigger word to paste the snippet.

What business problems are you solving with the product? What benefits have you realized?

Until I made the switch to CMake I was confined to Windows only development environments - which also required a hefty 4GB installation for Visual Studio, my primary development environment - which was incredibly frustrating as I'm a minimalist when it comes to travel, so my laptop was packing a minimal Ubuntu image. I couldn't really make use of Microsoft's project structure on the go so I was unable to work when I had nothing else to do. CMake and it's IDE integration made it easy to configure builds for both platforms without wanting to tear my hair out.

CMake review by User in Research
User in Research
Validated Reviewer
Verified Current User
Review Source

"For quick, efficient and cross-platform solution builder"

What do you like best?

I love the fact that I can create a general solution and just and projects after the other so easily, rebuild the entire solution, change environment... everything while staying cross-platform.

What do you dislike?

The tool is a bit low level and a few of my coworkers are reluctant to use it because it can be scary and seem complicated at the beginning.

Recommendations to others considering the product

Do not be scared and take the time to learn how to use it properly, you'll save time on the long run.

What business problems are you solving with the product? What benefits have you realized?

I easily build proof of concept and demonstration for my prospects and customers and keep everything on my machine, in a global environment which I never have to change !

CMake review by <span>Stewart H.</span>
Stewart H.
Validated Reviewer
Verified Current User
Review Source

"The BUILD framework"

What do you like best?

Well, where do I start. I started using make many years ago and then ran into CMake. Since then I haven't written several hundred to thousand line makefiles. Instead I spend my time on larger problems which is I guess the favorite part, the time savings. I do enjoy the rich feature set as well though, it integrates well with GIT, FTP, HTTP, etc and you can script anything that you want to script with it using their own syntax.

What do you dislike?

I did hate the learning curve as it has its own syntax that I think was designed directly opposite of how I think at times. Probably the hardest part for me initially was to determine how to get dependencies to link correctly. Additionally another nitpick is that documentation is not always the best for what you are trying to do.

Recommendations to others considering the product

No real recommendations here on this one.

What business problems are you solving with the product? What benefits have you realized?

We are building a component of our stack in C and C++. It has allowed us to focus more time on the code itself instead of the build framework.

CMake review by <span>Michele A.</span>
Michele A.
Validated Reviewer
Verified Current User
Review Source

"A Must-have for any C++ programmer"

What do you like best?

CMake solves the problem of crossplatform developing and libraries/headers hell by defining a meta-language which helps the developer to reproduce the configuration of a project on different machines under different configurations.

CMake makes it possible to integrate a C++ project (but also other languages are supported, such as Java and C#) with a Continuous Integration System such as Jenkins and perform automating testing. All the major platforms are supported and it's possible to compile easily for other architectures as well (e.g. from a x86 host to an ARM target) thanks to toolchain files.

What do you dislike?

It misses a kind of registry of CMake files for existing projects, so users can just download those files and integrate those ones in other project.

Recommendations to others considering the product

Read the documentation of CMake.org website, it's full of examples and the functions/types are explained very well.

Try also to find some real project using CMake on GitHub, so you can train yourself and learn how to manage big projects with it.

What business problems are you solving with the product? What benefits have you realized?

I solved the problem of including paths and libraries used with my C++ target.

Every time I switch from Windows to Linux and from Linux to Windows, I don't have to maintain different project configurations but just a main CMakeLists.txt file

CMake review by <span>Nicholas I.</span>
Nicholas I.
Validated Reviewer
Verified Current User
Review Source

"One of the better build systems for C/++"

What do you like best?

CMake uses plain text files to configure which allows it to be configured specifically for each project you are working on. It also includes a number of automatic library finding packages which ease the pain of header location.

What do you dislike?

Unfortunately, like many C++ compilers it can be a bit slow. However, it is, in my opinion, a better alternative to the GNU Autotools.

Recommendations to others considering the product

If you are trying to switch your build system, CMake is definitely worth a shot. While it has its problems, it is definitely one of teh best build systems on the market right now.

What business problems are you solving with the product? What benefits have you realized?

I use CMake for most of my C++ projects as the build system. Having a familiar build system allows me to cut down on developer time wasted and have my projects built reliably each time.

CMake review by <span>chedi t.</span>
chedi t.
Validated Reviewer
Review Source

"cmake review"

What do you like best?

Compared to the classic autotools used to generate Makefiles for the vast majority of opensource projects, cmake is breeze of fresh air of simplicity. You don't have to know all the arcane variables and function names in autoconf and automake.

You also are relieved from the clutter of files that need to be in the root of your project to build the project. Simply put cmake is a more simpler and efficient approach to building projects and with possibility to use third party modules, you can simply extend it functionalities

What do you dislike?

Other that the learning curve, I would say that the lack of a central repository for the third party modules is the main negative point for cmake. You can have multiple implementation for the same module with different degree of correctness. If you need something not shipped with the cmake official package, you are more likely to combine multiple chunks from various third party modules to achieve your goal.

Recommendations to others considering the product

If you are planing on using an open source build automation tool, you will more or less end up with Makefiles, although they are a very powerful tool in the right hand, managing them in manually is a very tedious task and the autotools automation was a nice step in the right direction. But for the pragmatic developer with productivity in mind cmake really make the difference with a more straightforward syntax and the multitude of third party modules.

What business problems are you solving with the product? What benefits have you realized?

We simply used cmake as an alternative to plain Makefile and autotools generated configuration files to ease the process of building and updating c++ projects.

CMake review by User in Computer Software
User in Computer Software
Validated Reviewer
Review Source

"A Good, Flexible, but Frustrating Crossplatform Solution for C++"

What do you like best?

Once it works, it's great. It's incredibly flexible, dead simple, and Just Works. The GUI is great to use and I frequently switch between it and the command line tool.

I have no complaints with using CMake as long as I'm not writing the files myself.

There's built in support for unit test frameworks and is highly customize-able.

Many parts of the language are great. It's easy to set required options, to find installed packages, or to list files in a folder.

I rarely write C++ without using CMake. Even if it's just me using it, and I'll only need a single version of Visual Studio.

What do you dislike?

It can be frustrating to use. The language is a weird mixture of built-in functions, concatenating strings, and writing macros. The language is just weird. It works, eventually, but I haven't grokked it yet.

Recommendations to others considering the product

Take the time to read the docs and be patient. It'll take a while to get use to it, but once it works it stays working.

What business problems are you solving with the product? What benefits have you realized?

It makes it trivial to have someone develop on Linux with CLion and someone else on Windows with Visual Studio. If you're doing cross platform work, this is a fantastic way to manage multiple projects and not have to worry about manually updating them.

Even if your only target platform is Windows, it seamlessly generates projects for a half dozen different versions of Visual Studio, both 32 and 64 bit.

CMake review by <span>Peter B.</span>
Peter B.
Validated Reviewer
Review Source

"If you don't use Qt, use this to manage your make infrastructure"

What do you like best?

CMake does a fantastic job of replacing autotools and is a capable replacement for Qt profiles. If you have a complex build environment, then it makes total sense to use CMake to manage it. It's much easier to write the CMake config files than it is to manage a large number of makefiles. It's fast, easy, and can be done in any text editor if you need to.

What do you dislike?

The use of functions can be intimidating. Usage of multiple CMake files can be a bit overwhelming. However, with good SCM, this is not a real problem.

Recommendations to others considering the product

Make sure you treat your CMake text files the same as any other SCM controlled entity.

What business problems are you solving with the product? What benefits have you realized?

We are evaluating CMake internally as our makefile generator. However, I have used CMake for a large number of personal projects and other projects at my previous company. Overall, it does one thing very well (create makefiles), and it reduces the amount of effort required to make your build system bulletproof for any environment, especially cross compiling.

Kate from G2 Crowd

Learning about CMake?

I can help.
* We monitor all CMake reviews to prevent fraudulent reviews and keep review quality high. We do not post reviews by company employees or direct competitors. Validated reviews require the user to submit a screenshot of the product containing their user ID, in order to verify a user is an actual user of the product.

Compare CMake to Similar Solutions