Initial commit.
This commit is contained in:
commit
4a913ea465
9 changed files with 244 additions and 0 deletions
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
# Generated code
|
||||
build/**
|
||||
|
||||
# VSCode
|
||||
.vscode/**
|
14
CMakeLists.txt
Normal file
14
CMakeLists.txt
Normal file
|
@ -0,0 +1,14 @@
|
|||
cmake_minimum_required(VERSION 3.18)
|
||||
project(protocolstack_test_fetch)
|
||||
|
||||
# C/C++ Standard
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_C_STANDARD 99)
|
||||
set(CMAKE_C_STANDARD_REQUIRED ON)
|
||||
|
||||
# Dependencies
|
||||
include(dependencies.cmake)
|
||||
|
||||
# Game source files
|
||||
add_subdirectory(fetchtest)
|
62
dependencies.cmake
Normal file
62
dependencies.cmake
Normal file
|
@ -0,0 +1,62 @@
|
|||
cmake_minimum_required(VERSION 3.11)
|
||||
|
||||
# Poco
|
||||
set(ENABLE_MONGODB OFF)
|
||||
set(ENABLE_REDIS OFF)
|
||||
set(ENABLE_DATA_SQLITE OFF)
|
||||
set(ENABLE_DATA_MYSQL OFF)
|
||||
set(ENABLE_DATA_ODBC OFF)
|
||||
set(ENABLE_ZIP OFF)
|
||||
set(ENABLE_PAGECOMPILER OFF) # Disable PageCompiler (unused binary)
|
||||
set(ENABLE_PAGECOMPILER_FILE2PAGE OFF) # Disable File2Page (unused binary)
|
||||
# Will maybe change later, for now we want the lib to be static.
|
||||
set(POCO_STATIC ON)
|
||||
|
||||
find_package(Poco QUIET)
|
||||
if (NOT Poco_FOUND)
|
||||
include(FetchContent)
|
||||
FetchContent_Declare(
|
||||
Poco
|
||||
DOWNLOAD_EXTRACT_TIMESTAMP OFF
|
||||
URL https://github.com/pocoproject/poco/archive/refs/tags/poco-1.9.4-release.tar.gz
|
||||
)
|
||||
FetchContent_GetProperties(Poco)
|
||||
FetchContent_MakeAvailable(Poco)
|
||||
set(Poco_INCLUDE_DIRS
|
||||
"${poco_SOURCE_DIR}/Foundation/include"
|
||||
"${poco_SOURCE_DIR}/Encodings/include"
|
||||
"${poco_SOURCE_DIR}/XML/include"
|
||||
"${poco_SOURCE_DIR}/JSON/include"
|
||||
"${poco_SOURCE_DIR}/Util/include"
|
||||
"${poco_SOURCE_DIR}/Net/include"
|
||||
"${poco_SOURCE_DIR}/Data/include"
|
||||
)
|
||||
endif()
|
||||
|
||||
# LibXML2
|
||||
set(LIBXML2_WITH_PROGRAMS OFF) # Disable programs
|
||||
set(LIBXML2_WITH_TESTS OFF) # Disable tests
|
||||
# Disabling every dependencies to build libxml2
|
||||
set(LIBXML2_WITH_PYTHON OFF)
|
||||
set(LIBXML2_WITH_ICONV OFF)
|
||||
set(LIBXML2_WITH_LZMA OFF)
|
||||
set(LIBXML2_WITH_ZLIB OFF)
|
||||
# Will maybe change later, for now we want the lib to be static.
|
||||
set(BUILD_SHARED_LIBS OFF)
|
||||
|
||||
find_package(libxml2 QUIET)
|
||||
if (NOT (libxml2_FOUND OR LIBXML2_FOUND))
|
||||
include(FetchContent)
|
||||
FetchContent_Declare(
|
||||
libxml2
|
||||
GIT_REPOSITORY https://gitlab.gnome.org/GNOME/libxml2.git
|
||||
GIT_TAG v2.12.6
|
||||
)
|
||||
FetchContent_GetProperties(libxml2)
|
||||
FetchContent_MakeAvailable(libxml2)
|
||||
set(LIBXML2_INCLUDE_DIR
|
||||
"${libxml2_SOURCE_DIR}/include"
|
||||
"${libxml2_BINARY_DIR}"
|
||||
)
|
||||
set(LIBXML2_LIBRARY "${libxml2_BINARY_DIR}/libxml2.a")
|
||||
endif()
|
54
fetchtest/CMakeLists.txt
Normal file
54
fetchtest/CMakeLists.txt
Normal file
|
@ -0,0 +1,54 @@
|
|||
# Project
|
||||
project(
|
||||
fetchtest
|
||||
VERSION 1.0.0
|
||||
DESCRIPTION "fetchtest"
|
||||
HOMEPAGE_URL "https://cmake.org/"
|
||||
LANGUAGES CXX C
|
||||
)
|
||||
set(TARGET fetchtest)
|
||||
|
||||
# Source files
|
||||
set(SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
||||
add_executable(${TARGET}
|
||||
${SOURCES}/libxml.cpp
|
||||
${SOURCES}/poco.cpp
|
||||
${SOURCES}/main.cpp
|
||||
)
|
||||
|
||||
# Include folders
|
||||
target_include_directories(${TARGET} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/include")
|
||||
target_include_directories(${TARGET} PRIVATE "${LIBXML2_INCLUDE_DIR}")
|
||||
target_include_directories(${TARGET} PRIVATE "${Poco_INCLUDE_DIRS}")
|
||||
|
||||
# Libraries
|
||||
target_link_libraries(
|
||||
${TARGET} PRIVATE
|
||||
${LIBXML2_LIBRARY}
|
||||
PocoFoundation
|
||||
PocoUtil
|
||||
PocoNet
|
||||
PocoXML
|
||||
PocoJSON
|
||||
)
|
||||
|
||||
# Compilation depending on the platform
|
||||
if(MSVC)
|
||||
# Build the program as a window-only (no cmd)
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
target_link_options(${TARGET} PRIVATE "/SUBSYSTEM:WINDOWS")
|
||||
target_compile_options(${TARGET} PRIVATE /W3 /WX )
|
||||
else()
|
||||
target_compile_options(${TARGET} PRIVATE /W3 /WX /DEBUG )
|
||||
endif()
|
||||
else()
|
||||
target_compile_options(${TARGET} PRIVATE -Wall -Wextra -Wpedantic -Werror)
|
||||
endif()
|
||||
|
||||
# Output folder
|
||||
set_target_properties(${TARGET}
|
||||
PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
|
||||
)
|
7
fetchtest/include/libxml.h
Normal file
7
fetchtest/include/libxml.h
Normal file
|
@ -0,0 +1,7 @@
|
|||
#ifndef _HEADER_FETCHTEST_LIBXML
|
||||
#define _HEADER_FETCHTEST_LIBXML
|
||||
|
||||
void info_libxml(void);
|
||||
void create_xml(void);
|
||||
|
||||
#endif // _HEADER_FETCHTEST_LIBXML
|
9
fetchtest/include/poco.h
Normal file
9
fetchtest/include/poco.h
Normal file
|
@ -0,0 +1,9 @@
|
|||
#ifndef _HEADER_FETCHTEST_POCO
|
||||
#define _HEADER_FETCHTEST_POCO
|
||||
|
||||
#include <string>
|
||||
|
||||
std::string get_date_time();
|
||||
std::string format_poco_version();
|
||||
|
||||
#endif // _HEADER_FETCHTEST__POCO
|
35
fetchtest/src/libxml.cpp
Normal file
35
fetchtest/src/libxml.cpp
Normal file
|
@ -0,0 +1,35 @@
|
|||
#include "libxml.h"
|
||||
|
||||
#include <libxml/xmlversion.h>
|
||||
#include <libxml/parser.h>
|
||||
#include <libxml/tree.h>
|
||||
#include <iostream>
|
||||
|
||||
void info_libxml(void)
|
||||
{
|
||||
std::cout << "[LIBXML2]\t version: " << LIBXML_DOTTED_VERSION << std::endl;
|
||||
}
|
||||
|
||||
void create_xml(void)
|
||||
{
|
||||
std::cout << "[LIBXML2]\tWriting basic .xml file..." << std::endl;
|
||||
// Create new doc
|
||||
xmlDocPtr doc = xmlNewDoc(BAD_CAST "1.0");
|
||||
xmlNodePtr root_node = xmlNewNode(nullptr, BAD_CAST "root");
|
||||
xmlDocSetRootElement(doc, root_node);
|
||||
|
||||
xmlNodePtr child1 = xmlNewChild(root_node, nullptr, BAD_CAST "child1", BAD_CAST "This is child 1");
|
||||
xmlNewProp(child1, BAD_CAST "attribute", BAD_CAST "value");
|
||||
|
||||
// Save the document
|
||||
const char* filename = "example.xml";
|
||||
if (xmlSaveFormatFileEnc(filename, doc, "UTF-8", 1) != -1) {
|
||||
std::cout << "[LIBXML2]\tXML file created successfully: " << filename << std::endl;
|
||||
} else {
|
||||
std::cerr << "LIBXML2]\tError saving XML file!" << std::endl;
|
||||
}
|
||||
|
||||
// Clean up
|
||||
xmlFreeDoc(doc);
|
||||
xmlCleanupParser();
|
||||
}
|
37
fetchtest/src/main.cpp
Normal file
37
fetchtest/src/main.cpp
Normal file
|
@ -0,0 +1,37 @@
|
|||
#include <Poco/Environment.h>
|
||||
#include <iostream>
|
||||
|
||||
#include "poco.h"
|
||||
#include "libxml.h"
|
||||
|
||||
void info_poco(void);
|
||||
|
||||
int main(void)
|
||||
{
|
||||
try
|
||||
{
|
||||
std::cout << "Poco Test..." << std::endl;
|
||||
info_poco();
|
||||
std::cout << "Libxml2 Test..." << std::endl;
|
||||
info_libxml();
|
||||
create_xml();
|
||||
std::cout << "Enter any key to quit the program\n> ";
|
||||
std::cin.ignore();
|
||||
}
|
||||
catch (const std::exception &ex)
|
||||
{
|
||||
std::cerr << "\033[0;31m[ ERR]:\t" << ex.what() << "\033[0m" << std::flush;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void info_poco(void)
|
||||
{
|
||||
std::cout << "\n";
|
||||
std::cout << "[TIME]:\t" << get_date_time() << "\n";
|
||||
std::cout << "[ OS]:\t" << Poco::Environment::osDisplayName() << " v" << Poco::Environment::osVersion() << "\n";
|
||||
std::cout << "[ARCH]:\t" << Poco::Environment::osArchitecture() << "\n";
|
||||
std::cout << "[POCO]:\tPoco C++ Library v" << format_poco_version() << "\n";
|
||||
std::cout << "\n"
|
||||
<< std::flush;
|
||||
}
|
21
fetchtest/src/poco.cpp
Normal file
21
fetchtest/src/poco.cpp
Normal file
|
@ -0,0 +1,21 @@
|
|||
#include "poco.h"
|
||||
|
||||
#include <Poco/LocalDateTime.h>
|
||||
#include <Poco/DateTimeFormatter.h>
|
||||
#include <Poco/Environment.h>
|
||||
#include <Poco/Format.h>
|
||||
#include <cstdint>
|
||||
|
||||
std::string get_date_time()
|
||||
{
|
||||
Poco::LocalDateTime dateTime;
|
||||
return Poco::DateTimeFormatter::format(
|
||||
dateTime,
|
||||
"%W %d %B %Y at %H:%M:%S");
|
||||
}
|
||||
|
||||
std::string format_poco_version()
|
||||
{
|
||||
uint32_t full_version = Poco::Environment::libraryVersion();
|
||||
return Poco::format("%u.%u.%u", (full_version >> 24), ((full_version >> 16) & 0xff), ((full_version >> 8) & 0xff));
|
||||
}
|
Loading…
Add table
Reference in a new issue