Cmake Toolchain File
GNU Build System Wikipedia. The GNU Build System, also known as the Autotools, is a suite of programming tools designed to assist in making source codepackagesportable to many Unix like systems. Rt.Jar File here. It can be difficult to make a software program portable the C compiler differs from system to system certain library functions are missing on some systems header files may have different names. One way to handle this is to write conditional code, with code blocks selected by means of preprocessor directives ifdef but because of the wide variety of build environments this approach quickly becomes unmanageable. Autotools is designed to address this problem more manageably. Autotools is part of the GNU toolchain and is widely used in many free software and open source packages. Its component tools are free software licensed under the GNU General Public License with special license exceptions12 permitting its use with proprietary software. The GNU Build System makes it possible to build many programs using a two step process configure followed by make. Componentsedit. Flow diagram of autoconf and automake. Autotools consists of the GNU utility programs Autoconf, Automake, and Libtool. Other related tools frequently used alongside it include GNUs make program, GNU gettext, pkg config, and the GNU Compiler Collection, also called GCC. Buildroot is a tool that simplifies and automates the process of building a complete Linux system for an embedded system, using crosscompilation. Ze0gqbNjd_2l5A.png' alt='Cmake Toolchain File' title='Cmake Toolchain File' />GNU AutoconfeditAutoconf generates a configure script based on the contents of a configure. The configure script, when run, scans the build environment and generates a subordinate config. Makefile. in into output files Makefile which are appropriate for that build environment. Finally the make program uses Makefile to generate executable programs from source code. The complexity of Autotools reflects the variety of circumstances under which a body of source code may be built. If a source code file is changed then it suffices to re run make which only re compiles that part of the body of the source code affected by the change. If a. in file has changed then it suffices to re run config. If the body of source code is copied to another computer then it is sufficient to re run configure which runs config. For this reason source code using Autotools is normally distributed without the files that configure generates. If the body of source code is changed more fundamentally, then configure. To process files, autoconf uses the GNU implementation of the m. Autoconf comes with several auxiliary programs such as Autoheader, which is used to help manage Cheader files Autoscan, which can create an initial input file for Autoconf and ifnames, which can list C pre processor identifiers used in the program. GNU AutomakeeditAutomake helps to create portable Makefiles, which are in turn processed with the make utility. It takes its input as Makefile. Makefile. in, which is used by the configure script to generate the file Makefile output. It also performs automatic dependency tracking every time a source file is compiled, the list of dependencies e. C header files is recorded. Cygwin uses the cryptographic hash algorithm SHA512 as of 20150323. The earlier 20150206 update of the setup program added support for SHA512 Cygwin previously. Later, any time make is run and a dependency appears to have changed, the dependent files will be rebuilt. GNU LibtooleditLibtool helps manage the creation of static and dynamiclibraries on various Unix like operating systems. Libtool accomplishes this by abstracting the library creation process, hiding differences between various systems e. GNULinux systems vs. Wiki/images/9/99/Eclipse_wizard_4.png' alt='Cmake Toolchain File' title='Cmake Toolchain File' />Solaris. Gnulib simplifies the process of making software that uses Autoconf and Automake portable to a wide range of systems. Autotools assists a software development person or team to write cross platform software and make it available to a much wider user community, including in its source code form to those users who wish to build the software themselves. In most cases users simply run the supplied configure script which has no dependencies other than the presence of a Bourne compatibleshell, and then a make program. They do not need to have the Autotools themselves installed on the computer. It can be used both for building native programs on the build machine and also for cross compiling to other architectures. Cross compiling software to run on a Windows host from a GNULinux or other Unix like build system is also possible, using Min. GW, however native compilation is often desirable on operating systems such as the Microsoft Windows family of systems that cannot run Bourne shell scripts on their own. This makes building such software on the Windows operating system a bit harder than on a Unix like system which provides the Bourne shell as a standard component. One can install the Cygwin or MSYS system on top of Windows to provide a Unix likecompatibility layer, though, allowing configure scripts to run. Cygwin also provides the GNU Compiler Collection, GNU make, and other software that provides a nearly complete Unix like system within Windows MSYS also provides GNU make and other tools designed to work with the Min. GW version of GCC. Although the developer is expected to provide a configure script for the end user, occasionally the user may wish to re generate the configure script itself. Such working might be necessary if the user wishes to amend the source code itself. Such users would need to have Autotools installed, and to use components such as its autoreconf. The autoconf generated configure can be slow because it executes programs such as a C compiler many times in order to test whether various libraries, header files, and language features are present. This particularly affects Cygwin, which, due to its lack of a native fork system call, may execute configure scripts considerably slower than Linux. CriticismeditIn his column for ACM Queue, Free. BSD developer Poul Henning Kamp criticized the GNU Build System 8The idea is that the configure script performs approximately 2. This is a horribly bad idea, already much criticized back in the 1. It is a travesty that the configure idea survived. Kamp sketches the history of the build system in the portability problems inherent in the multitude of 1. Unix variants, and ridicules the build system because even in the standardized world of POSIXthe 3. Unixen, which lacked them, had neither sufficient memory to execute libtool nor disks big enough for its 1. MB source code. See alsoeditReferenceseditExternal linksedit. English Movie 100 Feet.