feat: add shared library build and example application
This commit is contained in:
@@ -0,0 +1,41 @@
|
|||||||
|
ROOT_DIR := $(abspath ..)
|
||||||
|
|
||||||
|
CC := gcc
|
||||||
|
|
||||||
|
CXXFLAGS := -std=c++17 \
|
||||||
|
-Wall \
|
||||||
|
-Wextra \
|
||||||
|
-Werror \
|
||||||
|
-I$(ROOT_DIR)/core/include \
|
||||||
|
-I$(ROOT_DIR)/logger/include
|
||||||
|
|
||||||
|
LDFLAGS := -L$(ROOT_DIR)/build \
|
||||||
|
-llogger \
|
||||||
|
-lstdc++ \
|
||||||
|
-Wl,-rpath,$(ROOT_DIR)/build
|
||||||
|
|
||||||
|
BUILD_DIR := $(ROOT_DIR)/build
|
||||||
|
|
||||||
|
TARGET := $(BUILD_DIR)/logger_app
|
||||||
|
|
||||||
|
SRC := src/main.cpp
|
||||||
|
|
||||||
|
|
||||||
|
.PHONY: all clean
|
||||||
|
|
||||||
|
|
||||||
|
all: $(TARGET)
|
||||||
|
|
||||||
|
|
||||||
|
$(TARGET): $(SRC)
|
||||||
|
@mkdir -p $(BUILD_DIR)
|
||||||
|
|
||||||
|
$(CC) \
|
||||||
|
$(CXXFLAGS) \
|
||||||
|
$< \
|
||||||
|
-o $@ \
|
||||||
|
$(LDFLAGS)
|
||||||
|
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f $(TARGET)
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
#include "logger.hpp"
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
logger::Logger logger("app.log", logger::LogLevel::info());
|
||||||
|
|
||||||
|
auto status = logger.writeMessage("Hello from shared library");
|
||||||
|
|
||||||
|
if (!status.isSuccess()) {
|
||||||
|
std::cerr << status.getError() << '\n';
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
ROOT_DIR := $(abspath ..)
|
||||||
|
|
||||||
|
CC := gcc
|
||||||
|
|
||||||
|
CXXFLAGS := -std=c++17 \
|
||||||
|
-Wall \
|
||||||
|
-Wextra \
|
||||||
|
-Werror \
|
||||||
|
-fPIC \
|
||||||
|
-I$(ROOT_DIR)/core/include \
|
||||||
|
-Iinclude
|
||||||
|
|
||||||
|
LDFLAGS := -lstdc++
|
||||||
|
|
||||||
|
BUILD_DIR := $(ROOT_DIR)/build
|
||||||
|
|
||||||
|
TARGET := $(BUILD_DIR)/liblogger.so
|
||||||
|
|
||||||
|
SRC := src/logger.cpp
|
||||||
|
|
||||||
|
|
||||||
|
.PHONY: all clean
|
||||||
|
|
||||||
|
|
||||||
|
all: $(TARGET)
|
||||||
|
|
||||||
|
|
||||||
|
$(TARGET): $(SRC)
|
||||||
|
@mkdir -p $(BUILD_DIR)
|
||||||
|
|
||||||
|
$(CC) \
|
||||||
|
$(CXXFLAGS) \
|
||||||
|
-shared \
|
||||||
|
$< \
|
||||||
|
-o $@ \
|
||||||
|
$(LDFLAGS)
|
||||||
|
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f $(TARGET)
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#if defined(_WIN32)
|
||||||
|
#define LOGGER_API __declspec(dllexport)
|
||||||
|
#else
|
||||||
|
#define LOGGER_API __attribute__((visibility("default")))
|
||||||
|
#endif
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
#include "export.hpp"
|
||||||
#include "log_level.hpp"
|
#include "log_level.hpp"
|
||||||
#include "result.hpp"
|
#include "result.hpp"
|
||||||
|
|
||||||
@@ -19,7 +20,7 @@ namespace logger {
|
|||||||
* Методы with* используют неизменяемый подход:
|
* Методы with* используют неизменяемый подход:
|
||||||
* они создают новый экземпляр Logger с изменённой конфигурацией.
|
* они создают новый экземпляр Logger с изменённой конфигурацией.
|
||||||
*/
|
*/
|
||||||
class Logger {
|
class LOGGER_API Logger {
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
* @brief Создаёт объект логгера.
|
* @brief Создаёт объект логгера.
|
||||||
|
|||||||
Reference in New Issue
Block a user