diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2021-09-09 18:16:21 +0200 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2021-09-09 18:16:21 +0200 |
commit | d759a33273f9a9c74e770571b4b4713fed1f9b29 (patch) | |
tree | 247a8203362dfc3f2d114d0c0ad23b0869ae95ce | |
parent | 3e7a3ce3c07ba831c4522b6119d049ba9c1fd703 (diff) |
Add minimal cmake based build setup
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r-- | CMakeLists.txt | 10 | ||||
-rw-r--r-- | Makefile | 9 | ||||
-rw-r--r-- | default.nix | 24 | ||||
-rw-r--r-- | src/CMakeLists.txt | 12 | ||||
-rw-r--r-- | src/main.cpp | 24 |
5 files changed, 79 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..3b36448 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,10 @@ +cmake_minimum_required(VERSION 3.2) + +project(getif) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -O2") +set(CMAKE_INSTALL_PREFIX ${PROJECT_SOURCE_DIR}) +set(GETIF_INSTALL_BIN_DIR ${PROJECT_SOURCE_DIR}/bin) + +add_subdirectory(src) diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..8dadd5e --- /dev/null +++ b/Makefile @@ -0,0 +1,9 @@ +BUILD_DIR=build + +all: compile + +compile: ${BUILD_DIR} + make -C ${BUILD_DIR} + +${BUILD_DIR}: + mkdir -p ${BUILD_DIR} diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..8fc5d24 --- /dev/null +++ b/default.nix @@ -0,0 +1,24 @@ +{ pkgs ? (import <nixpkgs> {}) }: + +let + filterSource = builtins.filterSource + (p: t: pkgs.lib.cleanSourceFilter p t && baseNameOf p != "build"); +in +pkgs.stdenv.mkDerivation { + name = "getif"; + src = filterSource ./.; + + nativeBuildInputs = with pkgs; [ cmake pkg-config ]; + buildInputs = with pkgs; [ docopt_cpp ]; + + buildPhase = '' + mkdir build + cmake .. + make + ''; + + installPhase = '' + mkdir -p $out/bin + cp src/getif $out/bin/ + ''; +} diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..da2131d --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,12 @@ +cmake_minimum_required(VERSION 3.2) +project(getif) + +set(SOURCE_FILES main.cpp) + +find_package(docopt COMPONENTS CXX REQUIRED) +include_directories(${DOCOPT_INCLUDE_DIRS}) + +add_executable(getif ${SOURCE_FILES}) +target_link_libraries(${PROJECT_NAME} docopt) + +install(TARGETS getif DESTINATION ${GETIF_INSTALL_BIN_DIR}) diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..c62d284 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,24 @@ +#include <iostream> + +#include "docopt.h" + +static const char USAGE[] = +R"(Usage: getif [INTERFACE ...] + +-h --help Show this help text. +--version Show version. +)"; + +int main(int argc, const char** argv) { + std::map<std::string, docopt::value> args + = docopt::docopt(USAGE, + { argv + 1, argv + argc }, + true, // show help if requested + "getif 1.0"); // version string + + for(auto const& arg : args) { + std::cout << arg.first << arg.second << std::endl; + } + + return 0; +} |