configure-cmake is an autotools-style configure script for CMake-based projects.
People building software on Linux or BSD generally expect to be able
./configure && make && make install, but projects using CMake
don't provide a
configure script. To make matters worse, the syntax
for invoking CMake is awkward and has issues with discoverability.
configure-cmake provides an easy way for people accustomed to
autotools-based projects to build your CMake-based project. Just drop
configure script into your project; it will accept most of the
standard autotools arguments (such as
well as custom arguments you can specify, and map them to the correct
It it as permissively licensed as I can make it (CC0 is basically an
attempt to put something in the public domain), so please feel free to
copy it into your project—users accustomed to autotools will thank
you! You only need the
configure script—you shouldn't have to worry
about the LICENSE or README files.
You can add --enable-, --disable-, and --with-* parameters without
configure script itself. Instead, you only need to
.configure-custom.sh file next to your
configure will then source
.configure-custom.sh and use the
variables it finds to integrate the parameters.
The main variables you can set in
Each of these a space separated list of values. Each value is a '|' separated list of up to 3 values, though the first two are optional. The syntax is:
name will be be the name of the argument passed to
configure—for enable it will be
--enable-name, for disable it will
--disable-name, and for with it will be
value is the value passed to CMake, which defaults to
transformed-name is the key passed to CMake, which
name uppercased and all non-alpha-numeric characters
replaced with underscores. For example:
Will create a
--enable-foo parameter for people to pass to
configure. If passed,
configure will then pass
Additionally, if you would like to supply a custom documentation
string for parameters (which is displayed in the output of
./configure --help), you can create an additional variable called
ENABLE/DISABLE/WITH_transformed-name_DOC. Continuing or previous
ENABLE_BAZ_DOC="enable integration with foo"
Will result in the output of
./configure --help displaying
--enable-foo enable integration with foo
If you would like to see an example of how this works, you can use the
.configure-custom.sh from Squash.
Note that you can also use
--pass-thru -DBAZ=bar to achieve the same