Attempt to clean up the path mess in cmake and improve scalability.
Previously, paths such as action search path and config file path had to
be given manually and were likely to be wrong if running make install or
if running the program from the build directory directly.
This commit introduces set_switchable(), along with the
DINDEXER_INST_MODE. Whenever relevant, paths come with a regular and an
INST variant (eg: DINDEXER_QML_PATH and DINDEXER_INST_QML_PATH), which
are CACHE variables so users can customize them and expect their setting
to be persistent.
set_switchable() then sets a CURR variant of the same variable (eg:
DINDEXER_CURR_QML_PATH), which is set to either of the above two values
depending on if DINDEXER_INST_MODE is on or off. This way the rest of
the cmake code can just use the CURR variable and expect it to be set to
the right value.
For example if you run the script from dindexer/clang_debug
you will tell cmake to make a debug build using clang.
You can also use gcc_debug but there is no way to specify
a particular version.
export_compile_commands assumes you have your working copy in
$HOME/dev/code/dindexer and you are running it from your build
directory, which is in something like
$HOME/dev/build/dindexer/<config>
It will then invoke cmake with CMAKE_EXPORT_COMPILE_COMMANDS ON
for YouCompleteMe to work. The exported .json file is
automatically symlinked into your working copy. Any previous
symlink or file is deleted from your working copy first, so if
you run this script for Release and then for Debug, the appropriate
symlink to Debug will be in your working tree.
cmake_default simply wraps export_compile_commands passing
default cmake values I normally like to use.