Git Product home page Git Product logo

libcosim-extensions's Introduction

libcosim - A co-simulation library for C++

libcosim CI Conan libcosim CI CMake

This repository contains the OSP C++ library for co-simulations.

See CONTRIBUTING.md for contributor guidelines and LICENSE for terms of use.

The libcosim library is demonstrated in cosim and Cosim Demo Application. The applications can be downloaded from their release pages:

How to use

To use libcosim in your application you either build the library as described in the section below or you can use conan. As libcosim is made available as a conan package on https://osp.jfrog.io, you can include it in your application following these steps:

  • Install Conan version 1.x

  • Add the OSP Conan repository as a remote:

     conan remote add osp https://osp.jfrog.io/artifactory/api/conan/conan-local
    
  • Include libcosim as a requirement in your conanfile

  • Run conan install to aquire the libcosim package

cosim, cosim4j and Cosim Demo Application are examples of how to use the libcosim with conan.

How to build

Required tools

  • Compilers: Visual Studio >= 16.0/2019 (Windows), GCC >= 7 (Linux)
  • Build tool: CMake
  • API documentation generator (optional): Doxygen
  • Package manager (optional): Conan 1.x

Throughout this guide, we will use Conan to manage dependencies. However, it should be possible to use other package managers as well, such as vcpkg, and of course you can always build and install dependencies manually.

Step 1: Configure Conan

First, add the OSP Conan repository as a remote:

conan remote add osp https://osp.jfrog.io/artifactory/api/conan/conan-local

Package revisions must be enabled. See How to activate the revisions.

As we will build the library using the debug configuration in this guide (as opposed to release), we must use the Conan setting build_type=Debug. For GCC, we also need to set compiler.libcxx=libstdc++11, because the library makes heavy use of C++11/14/17 features. You can either change these settings in your Conan profile, or you can specify them using the --settings switch when running conan install later. To do the former, add one or both of the following lines to the appropriate profile(s):

build_type=Debug
compiler.libcxx=libstdc++11

Again, the second line should only be added if you are compiling with GCC.

Step 2: Prepare build system

Now, we will create a directory to hold the build system and generated files, use Conan to acquire dependencies, and run CMake to generate the build system.

We'll create the build directory as a subdirectory of our root source directory—that is, the directory which contains this README file—and call it build. Note, however, that it may be located anywhere and be called anything you like.

From the libcosim source directory, create and enter the build directory:

mkdir build
cd build

Then, acquire dependencies with Conan:

conan install .. --build=missing

(You may also have to append --settings build_type=Debug and possibly --settings compiler.libcxx=libstdc++11 to this command; see Step 1 for more information.)

proxyfmu

To include proxyfmu support, run conan install with the additional option:

-o proxyfmu=True

Now, we can run CMake to generate the build system. (If you have not installed Doxygen at this point, append -DLIBCOSIM_BUILD_APIDOC=OFF to the next command to disable API documentation generation.)

For Visual Studio, enter:

cmake .. -DLIBCOSIM_USING_CONAN=TRUE -A x64

For GCC, run:

cmake .. -DLIBCOSIM_USING_CONAN=TRUE -DCMAKE_BUILD_TYPE=Debug

At this point, we are ready to build and test the software. But first, here are some things worth noting about what we just did:

  • The -A (architecture) switch we used for Visual Studio ensures that we build in 64-bit mode, which is the default for Conan, but not for Visual Studio.
  • In addition to generating build files for MSBuild, CMake generates solution files for the Visual Studio IDE. Open the libcosim.sln file with VS if you want to check it out.
  • For GCC, CMake normally uses a Makefile generator which, unlike Visual Studio, is a single-configuration generator. Therefore, the choice of whether to build in debug or release mode has to be made at generation time, using the CMAKE_BUILD_TYPE variable.

Step 3: Build and test

When CMake generates IDE project files, as is the case for the Visual Studio generator, the software can of course be built, and tests run, from within the IDE. Here, however, we will show how to do it from the command line.

The following three commands will build the software, test the software, and build the API documentation, respectively:

cmake --build .
ctest -C Debug
cmake --build . --target doc

(The -C Debug switch is only necessary on multi-configuration systems like Visual Studio.)

All generated files can be found in the directory build/output.

libcosim-extensions's People

Contributors

kyllingstad avatar markaren avatar eidekrist avatar restenb avatar hplatou avatar ljamt avatar davidhjp01 avatar mrindar avatar thevang avatar msteinsto avatar khanrn avatar jornsv avatar

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.