Reusing arguments¶
In certain scenarios, the arguments to a cmany command can get a bit
complicated. To aid in such scenarios, cmany offers two ways of storing
these arguments, so that they are implicitly used in simple
commands such as cmany build.
Session arguments¶
You can store arguments in the environment variable CMANY_ARGS. Then the
resulting cmany command is taken as if it were given cmany <subcommand>
$CMANY_ARGS <command line arguments>. In the example below, the configure,
build and install commands will all use the five given compilers and two
build types, resulting in 10 build trees:
$ export CMANY_ARGS="-c clang++-3.9,clang++-3.8,g++-6,g++-7,icpc \
-t Debug,Release"
$ cmany c # 10 builds
$ cmany b # same
$ cmany i # same
The arguments stored in CMANY_ARGS can be combined with any other
argument. For example, if you now want to build only the Debug types of
the current value of CMANY_ARGS, just use the --include-types/--it
inclusion flag:
$ cmany b -it Debug
or as another example, you can process only a single build tree via the
--include-builds/-ib, say, icpc with Release:
$ cmany b -ib 'icpc.*Release'
Some arguments to cmany are meant to be used before the cmany subcommand. For
those arguments, you should use the CMANY_PFX_ARGS environment variable
instead of CMANY_ARGS. cmany will see commands given to it as cmany
$CMANY_PFX_ARGS <subcommand> $CMANY_ARGS <command line arguments>.
Note
The values of the CMANY_ARGS and CMANY_PFX_ARGS environment
variables are always used in every cmany invokation. To prevent cmany
from using these values, you will have to unset the variables:
$ unset CMANY_ARGS CMANY_PFX_ARGS
$ cmany b # uses defaults now
Project file¶
cmany also allows you to permanently store its arguments in a
cmany.yml file which should be placed alongside the project
CMakeLists.txt. This feature is under current development and is not
ready.