diff --git a/CMakeLists.txt b/CMakeLists.txt
index 76f07e7..8986d4f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -31,12 +31,30 @@
 # configurations. They are warnings, not errors.
 set(CMAKE_CXX_FLAGS "-Wall -Wextra -pedantic ${CMAKE_CXX_FLAGS}")
 
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
+
+add_custom_target(git-version-cmake-ide
+    cmake/ProjectGitVersion.cmake
+    cmake/ProjectGitVersionRunner.cmake
+    )
+include(cmake/ProjectGitVersion.cmake)
+prepare_git_version(NETCONF_CLI_VERSION "0.0")
+
 find_package(Doxygen)
 option(WITH_DOCS "Create and install internal documentation (needs Doxygen)" ${DOXYGEN_FOUND})
 
 find_package(docopt REQUIRED)
 find_package(spdlog REQUIRED)
 
+set(netconf-cli_SRCS
+    src/main.cpp
+    )
+
+add_executable(netconf-cli ${netconf-cli_SRCS})
+target_link_libraries(netconf-cli docopt)
+add_dependencies(netconf-cli target-NETCONF_CLI_VERSION)
+target_include_directories(netconf-cli PRIVATE ${PROJECT_BINARY_DIR})
+
 include(CTest)
 if(BUILD_TESTING)
     enable_testing()
diff --git a/cmake/ProjectGitVersion.cmake b/cmake/ProjectGitVersion.cmake
new file mode 100644
index 0000000..4e4327f
--- /dev/null
+++ b/cmake/ProjectGitVersion.cmake
@@ -0,0 +1,18 @@
+find_package(Git REQUIRED)
+
+macro(prepare_git_version VERSION_VARIABLE FALLBACK_VERSION)
+    set(${VERSION_VARIABLE}-version_files ${PROJECT_BINARY_DIR}/${VERSION_VARIABLE}.h)
+    add_custom_target(target-${VERSION_VARIABLE} DEPENDS build_version_fake_file-${VERSION_VARIABLE})
+    add_custom_command(OUTPUT build_version_fake_file-${VERSION_VARIABLE} ${${VERSION_VARIABLE}-version_files}
+        COMMAND ${CMAKE_COMMAND} -DGIT_EXECUTABLE=${GIT_EXECUTABLE}
+            -DVERSION_VARIABLE=${VERSION_VARIABLE}
+            -DFALLBACK_VERSION=${FALLBACK_VERSION}
+            -DPROJECT_NAME=${PROJECT_NAME}
+            -DPROJECT_SOURCE_DIR=${PROJECT_SOURCE_DIR}
+            -DPROJECT_BINARY_DIR=${PROJECT_BINARY_DIR}
+            -P ${PROJECT_SOURCE_DIR}/cmake/ProjectGitVersionRunner.cmake)
+    set_source_files_properties(${PROJECT_BINARY_DIR}/${${VERSION_VARIABLE}.h}
+        PROPERTIES
+        GENERATED TRUE
+        HEADER_FILE_ONLY TRUE)
+endmacro()
diff --git a/cmake/ProjectGitVersionRunner.cmake b/cmake/ProjectGitVersionRunner.cmake
new file mode 100644
index 0000000..38fdf28
--- /dev/null
+++ b/cmake/ProjectGitVersionRunner.cmake
@@ -0,0 +1,22 @@
+if(GIT_EXECUTABLE AND EXISTS ${PROJECT_SOURCE_DIR}/.git)
+    execute_process(COMMAND ${GIT_EXECUTABLE} describe --dirty --long --always --tags
+        WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+        OUTPUT_VARIABLE ${VERSION_VARIABLE})
+    string(REPLACE "\n" "" "${VERSION_VARIABLE}" ${${VERSION_VARIABLE}})
+endif()
+
+if(${VERSION_VARIABLE})
+    set(${VERSION_VARIABLE}_H
+        "#define ${VERSION_VARIABLE} \"${${VERSION_VARIABLE}}\"\n"
+        )
+    message(STATUS "Building ${PROJECT_NAME} Git version ${${VERSION_VARIABLE}}")
+else()
+    set(${VERSION_VARIABLE}_H
+        "#define ${VERSION_VARIABLE} \"${FALLBACK_VERSION}\"\n"
+        )
+    message(STATUS "Building ${PROJECT_NAME} version: ${${VERSION_VARIABLE}}")
+endif()
+
+file(WRITE ${PROJECT_BINARY_DIR}/${VERSION_VARIABLE}.h.in ${${VERSION_VARIABLE}_H})
+execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different
+    ${PROJECT_BINARY_DIR}/${VERSION_VARIABLE}.h.in ${PROJECT_BINARY_DIR}/${VERSION_VARIABLE}.h)
diff --git a/src/main.cpp b/src/main.cpp
new file mode 100644
index 0000000..e94ede8
--- /dev/null
+++ b/src/main.cpp
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2018 CESNET, https://photonics.cesnet.cz/
+ *
+ * Written by Jan Kundrát <jan.kundrat@cesnet.cz>
+ *
+*/
+
+#include <docopt.h>
+#include <string>
+#include "NETCONF_CLI_VERSION.h"
+
+static const char usage[] =
+R"(CLI interface to remote NETCONF hosts
+
+Usage:
+  netconf-cli (-h | --help)
+  netconf-cli --version
+)";
+
+int main(int argc, char* argv[])
+{
+    auto args = docopt::docopt(usage,
+                               {argv + 1, argv + argc},
+                               true,
+                               "netconf-cli " NETCONF_CLI_VERSION,
+                               true);
+    return 0;
+}
