CMake works with more compilers, in more situations, than you do. The tools CMake provides are better than the ones Writing ModernĬMake reduces your chances of build problems. Somehow, this is difficult to understand, so I’ll shout it to make it clearer. Installing CMake can be as little as one line, and doesn’t require sudo Using a newer version canĬut your build system code in less than half, reduce bugs, integrate better with externalĭependents, and more. No one likes writing or debugging build systems. Please, please upgrade andĭesign for newer CMake. Really old versions of CMake “available by default” in your environment. It was available in lots of Linux Distribution package managers. You want to use tools, like Clang-Tidy, to help you codeĬMake has really changed dramatically since it was introduced around 2000.You want to describe how your program is structured logically, not flags and commands.You want to use an IDE, but maybe not all of the time.You need to support different OSs (maybe even just flavors of Unix).You want to use CI (continuous integration).You need to build a package on more than one computer. While it is nice to consolidate languages, the requirement that you haveĪn external language installed and configured was too high for any of these to catch on for general Note that both CMake and Make are custom languages rather than being built in an existing language, Like the CERN experiments being about to use it for thousands of modules. Well, with small projects able to pick it up easily (modern CMake, anyway), and massive projects But CMake has unparalleled support by IDEs, libraries, and compilers. (by Google), SCons (older Python system), Meson (young Python system, very opinionated), and a few Other BSGs include Autotools (old, inflexible), Bazel It is not really in the same category as make. The most popular BSG is CMake, which stands for Cross-platform Make. These usually write a build system (or IDE) file and then let that do the actuallyīuild. Of your programming language build they usually support common compilers, languages, libraries, and
0 Comments
Leave a Reply. |