Enhance the output of --version with Git describe results.

This commit is contained in:
Paul Smith 2019-03-23 10:24:10 -04:00
parent 820981cd71
commit dbbe2ed1b9
2 changed files with 22 additions and 1 deletions

View File

@ -209,3 +209,20 @@ target_sources(ccls PRIVATE
src/messages/textDocument_signatureHelp.cc src/messages/textDocument_signatureHelp.cc
src/messages/workspace.cc src/messages/workspace.cc
) )
### Obtain CCLS version information from Git
### This only happens when cmake is re-run!
if(NOT CCLS_VERSION)
execute_process(COMMAND git describe --tag HEAD
OUTPUT_VARIABLE CCLS_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
if(NOT CCLS_VERSION)
set(CCLS_VERSION "<unknown>")
endif()
endif()
set_property(SOURCE src/main.cc APPEND PROPERTY
COMPILE_DEFINITIONS CCLS_VERSION=\"${CCLS_VERSION}\")

View File

@ -68,11 +68,15 @@ void CloseLog() { fclose(ccls::log::file); }
} // namespace } // namespace
#ifndef CCLS_VERSION
# define CCLS_VERSION "<unknown>"
#endif
int main(int argc, char **argv) { int main(int argc, char **argv) {
TraceMe(); TraceMe();
sys::PrintStackTraceOnErrorSignal(argv[0]); sys::PrintStackTraceOnErrorSignal(argv[0]);
cl::SetVersionPrinter([](raw_ostream &OS) { cl::SetVersionPrinter([](raw_ostream &OS) {
OS << clang::getClangToolFullVersion("ccls") << "\n"; OS << clang::getClangToolFullVersion("ccls version " CCLS_VERSION " / clang") << "\n";
}); });
for (auto &I : TopLevelSubCommand->OptionsMap) for (auto &I : TopLevelSubCommand->OptionsMap)