Coder Social home page Coder Social logo

eclipse-ecal / ecal-core Goto Github PK

View Code? Open in Web Editor NEW
8.0 4.0 3.0 2.23 MB

๐Ÿ“ฆ eCAL C/C++ runtime core

License: Apache License 2.0

CMake 7.16% Batchfile 0.28% C 11.05% C++ 81.24% Shell 0.28%
cpp client-server google-protobuf ipc middleware publish-subscribe shared-memory

ecal-core's Introduction

The eCAL core only project

License

The enhanced Communication Abstraction Layer (eCAL) is a middleware that enables scalable, high performance interprocess communication on a single computer node or between different nodes in a computer network.

The goal of the ecal core only project is to create a modular core with clearly defined dependencies based on the configured features. This will enormously reduce the integration effort into other projects and the porting effort to specific hardware.

Visit the eCAL Documentation at ๐ŸŒ https://ecal.io for more information.

Differences to Eclipse-eCAL

  • C/C++ language support only

How to build

Clone the repository and its submodules

git clone https://github.com/eclipse-ecal/ecal-core.git
cd ecal-core
git submodule init
git submodule update

Build it

mkdir _build
cd _build
cmake .. -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=submodule_dependencies.cmake
cmake --build .

CMake Options

This section provides documentation for the CMake options used in configuring the eCAL library. These options allow you to customize the build and enable or disable specific features. Please adapt the options according to your project requirements.

Available dependencies

ECAL_CORE_HAS_PROTOBUF
  • This option determines whether the Google protobuf library is available or not. If enabled, it includes the compilation of protobuf based samples and unit tests for eCAL.

Additional Builds

ECAL_CORE_BUILD_SAMPLES
  • This option controls whether the eCAL samples should be built. If not needed, you can disable this option to reduce build time.
ECAL_CORE_BUILD_TESTS
  • This option determines whether the eCAL Google Tests should be built. If enabled, it includes the compilation of unit tests for eCAL. Disabling this option will skip the build of tests if they are not required in your development environment.
  • Requires gtest library.

Core Internal Feature Configuration

ECAL_CORE_CONFIG_INIFILE
  • Enabling this option allows eCAL to be configured via an ecal.ini file. This file is used to set various configuration parameters for eCAL, providing flexibility in adjusting its behavior without modifying the source code.
  • Requires simpleini library.
ECAL_CORE_COMMAND_LINE
  • Enabling this option includes support for eCAL application command-line interfaces (cmd line). This allows you to interact with eCAL applications through the command line, providing additional runtime configuration options.
  • Requires tclap library.
ECAL_CORE_REGISTRATION
  • Enabling this option activates the eCAL registration layer. This layer is responsible for managing and registering different components within the eCAL ecosystem, facilitating communication between them.
ECAL_CORE_MONITORING
  • Enabling this option activates the eCAL monitoring functionality.
ECAL_CORE_PUBLISHER
  • Enabling this option includes the eCAL publisher functionality. This is essential for components that need to publish data to the eCAL communication infrastructure.
ECAL_CORE_SUBSCRIBER
  • Enabling this option includes the eCAL subscriber functionality. This is crucial for components that need to subscribe to and receive data from the eCAL communication infrastructure.
ECAL_CORE_SERVICE
  • Enabling this option includes the eCAL server/client functionality.
ECAL_CORE_TIMEPLUGIN
  • Enabling this option includes the eCAL time plugin functionality. This allows for precise synchronization of time across different components using eCAL.
ECAL_CORE_NPCAP_SUPPORT
  • Enabling this option replaces the standard ASIO UDP receiver by a NPCAP based UDP receiver to increase the performance on Windows platforms.
  • Requires udpcap library.
ECAL_CORE_REGISTRATION_SHM
  • Enabling this option activates the eCAL registration layer based on shared memory for high performance local communication scenarios only.
ECAL_CORE_TRANSPORT_UDP
  • Enabling this option includes the eCAL UDP Multicast message transport layer.
  • Requires ecaludp library.
ECAL_CORE_TRANSPORT_TCP
  • Enabling this option includes the eCAL TCP message transport layer.
  • Requires tcp_pubsub library.
ECAL_CORE_TRANSPORT_SHM
  • Enabling this option includes the eCAL local shared memory message transport layer.

Note: Please adjust these options based on your project's needs, ensuring that the selected features align with your desired functionality and dependencies.

ecal-core's People

Contributors

rex-schilasky avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

ecal-core's Issues

document API changes to eclipse-ecal core

removed public header:

  • include/ecal/cimpl/ecal_event_cimpl.h - marked deprecated
  • include/ecal/cimpl/ecal_proto_dyn_json_subscriber_cimpl.h - marked deprecated
  • include/ecal/cimpl/ecal_qos_cimpl.h - marked deprecated
  • include/ecal/ecal_event.h - marked deprecated
  • include/ecal/ecal_eventhandle.h - marked deprecated
  • include/ecal/ecal_qos.h - marked deprecated
  • include/ecal/ecal_service.h - marked deprecated
  • include/ecal/ecal_timed_cb.h - marked deprecated

new API:

ecal_subscriber_cimpl.h:

  • ECALC_API int eCAL_Sub_GetTypeName(ECAL_HANDLE handle_, void* buf_, int buf_len_);
  • ECALC_API int eCAL_Sub_GetEncoding(ECAL_HANDLE handle_, void* buf_, int buf_len_);

ecal_util_cimpl.h:

  • ECALC_API int eCAL_Util_GetTopicEncoding(const char* topic_name_, void* topic_encoding_, int topic_encoding_len_);
  • ECALC_API int eCAL_Util_GetTopicDescription(const char* topic_name_, void* topic_desc_, int topic_desc_len_);

ecal_log.h:

  • ECAL_API int GetLogging(std::string& log_); (moved from ecal_monitoring.h)

changed API:

ecal_callback_cimpl.h:

enum eCAL_Subscriber_Event
{
  sub_event_none              = 0,
  sub_event_connected         = 1,
  sub_event_disconnected      = 2,
  sub_event_dropped           = 3,
  sub_event_timeout           = 4,         // REMOVED
  sub_event_corrupted         = 5,
  sub_event_update_connection = 6,
};

struct SPubEventCallbackDataC
{
  enum eCAL_Publisher_Event  type;
  long long                  time;
  long long                  clock;
  const char*                tid;
  const char*                tname;
  const char*                tencoding;         // NEW
  const char*                tdesc;
};

ecal_init_cimpl.h:

#define eCAL_Init_Publisher   0x01
#define eCAL_Init_Subscriber  0x02
#define eCAL_Init_Service     0x04
#define eCAL_Init_Monitoring  0x08
#define eCAL_Init_Logging     0x10
#define eCAL_Init_TimeSync    0x20
#define eCAL_Init_RPC         0x40         // REMOVED (was not used)
#define eCAL_Init_ProcessReg  0x80

ecal_tlayer_cimpl.h:

enum eTransportLayerC
{
  tlayer_none       = 0,
  tlayer_udp_mc     = 1,
  tlayer_shm        = 4,
  tlayer_tcp        = 5,
  tlayer_inproc     = 42,         // REMOVED (whole layer no more implemented, shm should be used instead)
  tlayer_all        = 255
};

ecal_callback.h:

struct SPubEventCallbackData
  {
    eCAL_Publisher_Event type;
    long long            time;
    long long            clock;
    std::string          tid;
    std::string          ttype;         // REMOVED (use tdatatype)
    std::string          tdesc;         // REMOVED (use tdatatype)
    SDataTypeInformation tdatatype;
  };

struct SSubEventCallbackData
  {
    eCAL_Subscriber_Event type;
    long long             time;
    long long             clock;
    std::string           tid;
    std::string           ttype;         // REMOVED (use tdatatype)
    std::string           tdesc;         // REMOVED (use tdatatype)
    SDataTypeInformation  tdatatype;
  };

ecal_tlayer.h:

enum eTransportLayer
{
  tlayer_none       = 0,
  tlayer_udp_mc     = 1,
  tlayer_shm        = 4,
  tlayer_tcp        = 5,
   tlayer_inproc     = 42,         // REMOVED (whole layer no more implemented, shm should be used instead)
   tlayer_all        = 255
};

struct ECAL_API STLayer
{
  eSendMode sm_udp_mc;
  eSendMode sm_shm;
  eSendMode sm_inproc;         // REMOVED (whole layer no more implemented, shm should be used instead)
  eSendMode sm_tcp;
};

types/monitoring.h:

  • multiple renamings / type changes, incompatible with previous versions

_msg/serialization_format/pub/sub/sever/client:

  • different redesigns, should be API compatible, but will be refactored anyway later

removed API:

ecal_util_cimpl.h:

  • ECALC_API int eCAL_Util_GetTypeName(const char* topic_name_, void* topic_type_, int topic_type_len_); (deprecated)
  • ECALC_API int eCAL_Util_GetDescription(const char* topic_name_, void* topic_desc_, int topic_desc_len_); (deprecated)

ecal_log_cimpl.h:

  • ECALC_API void eCAL_Logging_StartCoreTimer();
  • ECALC_API void eCAL_Logging_StopCoreTimer();
  • ECALC_API void eCAL_Logging_SetCoreTime(double time_);
  • ECALC_API double eCAL_Logging_GetCoreTime();

ecal_process_cimpl.h:

  • ECALC_API int eCAL_Process_GetHostID();
  • ECALC_API float eCAL_Process_GetProcessCpuUsage();
  • ECALC_API unsigned long eCAL_Process_GetProcessMemory();
  • ECALC_API long long eCAL_Process_GetSClock(); (deprecated)
  • ECALC_API long long eCAL_Process_GetSBytes(); (deprecated)
  • ECALC_API long long eCAL_Process_GetWClock();
  • ECALC_API long long eCAL_Process_GetWBytes();
  • ECALC_API long long eCAL_Process_GetRClock();
  • ECALC_API long long eCAL_Process_GetRBytes();

ecal_publisher_cimpl.h:

  • ECALC_API int eCAL_Pub_SetTypeName(ECAL_HANDLE handle_, const char* topic_type_name_, int topic_type_name_len_);
  • ECALC_API int eCAL_Pub_SetDescription(ECAL_HANDLE handle_, const char* topic_desc_, int topic_desc_len_);
  • ECALC_API int eCAL_Pub_SetQOS(ECAL_HANDLE handle_, struct SWriterQOSC qos_);
  • ECALC_API int eCAL_Pub_GetQOS(ECAL_HANDLE handle_, struct SWriterQOSC* qos_);
  • ECALC_API int eCAL_Pub_SetLayerMode(ECAL_HANDLE handle_, enum eTransportLayerC layer_, enum eSendModeC mode_);
  • ECALC_API int eCAL_Pub_SetMaxBandwidthUDP(ECAL_HANDLE handle_, long bandwidth_);
  • ECALC_API int eCAL_Pub_ShmSetBufferCount(ECAL_HANDLE handle_, long buffering_);
  • ECALC_API int eCAL_Pub_ShmEnableZeroCopy(ECAL_HANDLE handle_, int state_);

ecal_subscriber_cimpl.h:

  • ECALC_API int eCAL_Sub_SetQOS(ECAL_HANDLE handle_, struct SReaderQOSC qos_);
  • ECALC_API int eCAL_Sub_GetQOS(ECAL_HANDLE handle_, struct SReaderQOSC* qos_);
  • ECALC_API_DEPRECATED int eCAL_Sub_AddReceiveCallbackC(ECAL_HANDLE handle_, ReceiveCallbackCT callback_, void* par_);
  • ECALC_API int eCAL_Sub_SetTimeout(ECAL_HANDLE handle_, int timeout_);

ecal_config.h:

  • ECAL_API int GetMaxUdpBandwidthBytesPerSecond();
  • ECAL_API bool IsInprocRecEnabled();
  • ECAL_API TLayer::eSendMode GetPublisherInprocMode();

ecal_log.h:

  • ECAL_API void StartCoreTimer();
  • ECAL_API void StopCoreTimer();
  • ECAL_API void SetCoreTime(double time_);
  • ECAL_API double GetCoreTime();

ecal_monitoring.h:

  • ECAL_API int GetMonitoring(std::string& mon_); (use ECAL_API int GetMonitoring(eCAL::Monitoring::SMonitoring& mon_, unsigned int entities_ = Entity::All); instead)
  • ECAL_API int GetLogging(std::string& log_); (moved to ecal_log.h)
  • ECAL_API int PubMonitoring(bool state_, std::string name_ = "ecal.monitoring"); (deprecated)
  • ECAL_API int PubLogging(bool state_, std::string name_ = "ecal.logging"); (deprecated)

ecal_process.h:

  • ECAL_API int GetHostID();
  • ECAL_API float GetProcessCpuUsage();
  • ECAL_API unsigned long GetProcessMemory();
  • ECAL_API long long GetSClock(); (deprecated)
  • ECAL_API long long GetSBytes(); (deprecated)
  • ECAL_API long long GetWClock();
  • ECAL_API long long GetWBytes();
  • ECAL_API long long GetRClock();
  • ECAL_API long long GetRBytes();

ecal_publisher.h:

  • ECAL_API CPublisher(const std::string& topic_name_, const std::string& topic_type_, const std::string& topic_desc_ = ""); (deprecated)
  • ECAL_API bool Create(const std::string& topic_name_, const std::string& topic_type_, const std::string& topic_desc_ = ""); (deprecated)
  • ECAL_API bool SetTypeName(const std::string& topic_type_name_); (deprecated)
  • ECAL_API bool SetDescription(const std::string& topic_desc_); (deprecated)
  • ECAL_API bool SetQOS(const QOS::SWriterQOS& qos_);
  • ECAL_API QOS::SWriterQOS GetQOS();
  • ECAL_API bool SetLayerMode(TLayer::eTransportLayer layer_, TLayer::eSendMode mode_);
  • ECAL_API bool SetMaxBandwidthUDP(long bandwidth_);
  • ECAL_API bool ShmSetBufferCount(long buffering_);
  • ECAL_API bool ShmEnableZeroCopy(bool state_);
  • ECAL_API bool ShmSetAcknowledgeTimeout(long long acknowledge_timeout_ms_);
  • bool ShmSetAcknowledgeTimeout(std::chrono::duration<Rep, Period> acknowledge_timeout_)
  • ECAL_API size_t Send(const void* buf_, size_t len_, long long time_, long long acknowledge_timeout_ms_) const;
  • ECAL_API size_t SendSynchronized(const void* const buf_, size_t len_, long long time_, long long acknowledge_timeout_ms_) const (deprecated)
  • ECAL_API size_t Send(CPayloadWriter& payload_, long long time_, long long acknowledge_timeout_ms_) const;
  • ECAL_API size_t Send(const std::string& s_, long long time_, long long acknowledge_timeout_ms_) const
  • ECAL_API std::string GetTypeName() const; (deprecated)
  • ECAL_API std::string GetDescription() const; (deprecated)

ecal_subscriber.h:

  • ECAL_API CSubscriber(const std::string& topic_name_, const std::string& topic_type_, const std::string& topic_desc_ = ""); (deprecated)
  • ECAL_API bool Create(const std::string& topic_name_, const std::string& topic_type_, const std::string& topic_desc_ = ""); (deprecated)
  • ECAL_API bool SetQOS(const QOS::SReaderQOS& qos_);
  • ECAL_API QOS::SReaderQOS GetQOS();
  • ECAL_API size_t Receive(std::string& buf_, long long* time_ = nullptr, int rcv_timeout_ = 0) const; (deprecated)
  • ECAL_API std::string GetTypeName() const; (deprecated)
  • ECAL_API std::string GetDescription() const; (deprecated)
  • ECAL_API bool SetTimeout(int timeout_);

ecal_client.h:

  • ECAL_API bool Call(const std::string& host_name_, const std::string& method_name_, const std::string& request_, struct SServiceResponse& service_info_, std::string& response_); (deprecated)

ecal_util.h:_

  • ECAL_API std::string GeteCALHomePath(); (deprecated)
  • ECAL_API std::string GeteCALDefaultIniFile(); (deprecated)
  • ECAL_API bool GetTopicTypeName(const std::string& topic_name_, std::string& topic_type_); (deprecated)
  • ECAL_API std::string GetTopicTypeName(const std::string& topic_name_); (deprecated)
  • ECAL_API bool GetTopicDescription(const std::string& topic_name_, std::string& topic_desc_); (deprecated)
  • ECAL_API std::string GetTopicDescription(const std::string& topic_name_); (deprecated)
  • ECAL_API bool GetTypeName(const std::string& topic_name_, std::string& topic_type_); (deprecated)
  • ECAL_API std::string GetTypeName(const std::string& topic_name_); (deprecated)
  • ECAL_API bool GetDescription(const std::string& topic_name_, std::string& topic_desc_); (deprecated)
  • ECAL_API std::string GetDescription(const std::string& topic_name_); (deprecated)

CMake cache vars are missing project name prefix

Describe the bug
Some CMake cache vars are missing a project specific prefix.
This can lead to problems when eCAL is added to another project via add_subdirectory e.g. via FetchContent.
In addition, using a common prefix for all cache vars will cluster them nicely in CMake GUI.

Expected behavior
All CMake cache vars have a common prefix.

Desktop (please complete the following information):
Not applicable

eCAL-core does not build with C++17

Describe the bug
ecal-core does not build with C++17. Issue seems to be thirdparty/simpleini.

Minimal example to reproduce

mkdir _build
cd _build

cmake .. -DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_STANDARD_REQUIRED=ON -DCMAKE_CXX_EXTENSIONS=ON
cmake --build . --parallel --config Release

------ Build All started: Project: ecal-core, Configuration: x64-Release ------
[1/3] Building CXX object ecal\core\CMakeFiles\core.dir\src\ecal_config_reader.cpp.obj
FAILED: ecal/core/CMakeFiles/core.dir/src/ecal_config_reader.cpp.obj
C:[...]\x64\cl.exe /nologo /TP -DASIO_DISABLE_VISIBILITY -DASIO_STANDALONE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_WIN32_WINNT=0x0601 -Dcore_EXPORTS -DeCAL_EXPORTS -I....\ecal\core\src -I....\ecal\core\include -Iecal\core\include -I....\lib\ecal_protobuf\include -I....\thirdparty\protobuf\src -Iecal\core_pb\protobuf -I....\thirdparty\ecal-utils\include -I....\thirdparty\tcp_pubsub\tcp_pubsub\include -Ithirdparty\tcp_pubsub\tcp_pubsub -I"C:\Program Files\HDF_Group\HDF5\1.10.5\include" -I....\thirdparty\asio\asio\include -I....\thirdparty\tclap\include -I....\thirdparty\simpleini /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MP /W4 /MD /O2 /Ob2 /DNDEBUG -std:c++17 /showIncludes /Foecal\core\CMakeFiles\core.dir\src\ecal_config_reader.cpp.obj /Fdecal\core\CMakeFiles\core.dir\ /FS -c ....\ecal\core\src\ecal_config_reader.cpp
C:[...]\ext\ecal-core_build\x64-Release\cl : Command line warning D9025: overriding '/W3' with '/W4'
C:[...]\ext\ecal-core\thirdparty\simpleini\SimpleIni.h(329): error C2143: syntax error: missing ',' before '<'
....\thirdparty\simpleini\SimpleIni.h(331): note: see reference to class template instantiation 'CSimpleIniTempl<SI_CHAR,SI_STRLESS,SI_CONVERTER>::Entry::KeyOrder' being compiled
....\thirdparty\simpleini\SimpleIni.h(340): note: see reference to class template instantiation 'CSimpleIniTempl<SI_CHAR,SI_STRLESS,SI_CONVERTER>::Entry' being compiled
....\thirdparty\simpleini\SimpleIni.h(1245): note: see reference to class template instantiation 'CSimpleIniTempl<SI_CHAR,SI_STRLESS,SI_CONVERTER>' being compiled
C:[...]\ext\ecal-core\thirdparty\simpleini\SimpleIni.h(337): error C2143: syntax error: missing ',' before '<'
....\thirdparty\simpleini\SimpleIni.h(340): note: see reference to class template instantiation 'CSimpleIniTempl<SI_CHAR,SI_STRLESS,SI_CONVERTER>::Entry::LoadOrder' being compiled
C:[...]\ext\ecal-core\thirdparty\simpleini\SimpleIni.h(329): error C2039: 'binary_function': is not a member of 'std'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\algorithm(40): note: see declaration of 'std'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\xmemory(1321): note: see reference to class template instantiation 'CSimpleIniTempl<char,SI_NoCase,SI_ConvertA>::Entry::KeyOrder' being compiled
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\xmemory(1321): note: see reference to variable template 'const bool is_empty_v<CSimpleIniTempl<char,SI_NoCase,SI_ConvertA >::Entry::KeyOrder>' being compiled
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\include\map(73): note: see reference to class template instantiation 'std::_Tree<std::_Tmap_traits<_Kty,_Ty,_Pr,_Alloc,false>>' being compiled
with
[
_Kty=CSimpleIniTempl<char,SI_NoCase,SI_ConvertA>::Entry,
_Ty=std::multimap<CSimpleIniTempl<char,SI_NoCase,SI_ConvertA>::Entry,const char *,CSimpleIniTempl<char,SI_NoCase,SI_ConvertA>::Entry::KeyOrder,std::allocator<std::pair<const CSimpleIniTempl<char,SI_NoCase,SI_ConvertA>::Entry,const char *>>>,
_Pr=CSimpleIniTempl<char,SI_NoCase,SI_ConvertA>::Entry::KeyOrder,
_Alloc=std::allocator<std::pair<const CSimpleIniTempl<char,SI_NoCase,SI_ConvertA>::Entry,std::multimap<CSimpleIniTempl<char,SI_NoCase,SI_ConvertA>::Entry,const char *,CSimpleIniTempl<char,SI_NoCase,SI_ConvertA>::Entry::KeyOrder,std::allocator<std::pair<const CSimpleIniTempl<char,SI_NoCase,SI_ConvertA>::Entry,const char *>>>>>
]
....\thirdparty\simpleini\SimpleIni.h(1221): note: see reference to class template instantiation 'std::map<CSimpleIniTempl<char,SI_NoCase,SI_ConvertA>::Entry,std::multimap<CSimpleIniTempl<char,SI_NoCase,SI_ConvertA>::Entry,const SI_CHAR *,CSimpleIniTempl<SI_CHAR,SI_NoCase<SI_CHAR>,SI_ConvertA<SI_CHAR>>::Entry::KeyOrder,std::allocator<std::pair<const CSimpleIniTempl<SI_CHAR,SI_NoCase<SI_CHAR>,SI_ConvertA<SI_CHAR>>::Entry,const SI_CHAR *>>>,CSimpleIniTempl<SI_CHAR,SI_NoCase<SI_CHAR>,SI_ConvertA<SI_CHAR>>::Entry::KeyOrder,std::allocator<std::pair<const CSimpleIniTempl<SI_CHAR,SI_NoCase<SI_CHAR>,SI_ConvertA<SI_CHAR>>::Entry,std::multimap<CSimpleIniTempl<SI_CHAR,SI_NoCase<SI_CHAR>,SI_ConvertA<SI_CHAR>>::Entry,const SI_CHAR *,CSimpleIniTempl<SI_CHAR,SI_NoCase<SI_CHAR>,SI_ConvertA<SI_CHAR>>::Entry::KeyOrder,std::allocator<std::pair<const CSimpleIniTempl<SI_CHAR,SI_NoCase<SI_CHAR>,SI_ConvertA<SI_CHAR>>::Entry,const SI_CHAR *>>>>>>' being compiled
with
[
SI_CHAR=char
]
....\ecal\core\src\ecal_config_reader.cpp(283): note: see reference to class template instantiation 'CSimpleIniTempl<char,SI_NoCase,SI_ConvertA>' being compiled
C:[...]\ext\ecal-core\thirdparty\simpleini\SimpleIni.h(329): error C2504: 'binary_function': base class undefined
ninja: build stopped: subcommand failed.

Build All failed.

Issue seems to be same error message as brofield/simpleini#48

Builds fine using Ubuntu 20.04.

Desktop (please complete the following information):

  • OS: Windows 10 Enterprise
  • Version: 21H2 19044.2728
  • Microsoft Visual Studio Professional 2019 Version 16.11.25
  • MSVC 19.29.30148.0
  • CMake version 3.20.21032501-MSVC_2

Add ecal-core to vcpkg

It would be great to add ecal-core to vcpkg.

We need to refactor CMakeLists.txt to be compatible with vcpkg. I can help with, since I tried and made a good progress. Actually, I published fineftp into vcpkg. So, I think we can do the same with eCAL. I know ecal has been built as a connan package, we can do the same with vcpkg.

Example:
https://github.com/microsoft/vcpkg/tree/master/ports/fineftp

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.