Conference Paper

A Cross Platform Development Workflow for C/C++ Applications

Authors:
To read the full-text of this research, you can request a copy directly from the authors.

Abstract

Even though the programming languages C and C++ have been standardized by the American National Standards Institute (ANSI) and the International Standards Organization (ISO) and - in addition to that - the availability of the C library and the standard template library (STL) enormously simplified development of platform independent applications for the most common operating systems, such a project often already fails at the beginning of the toolchain - the build system or the source code project management.In our opinion this gap is filled by the open source project CMake in an excellent way. It allows developers to use their favourite development environment on each operating system, yet spares the time intensive synchronization of platform specific project files, by providing a simple, single source, textual description. With KDE4, CMake was introduced to a very popular project. In this article we propose a workflow to ease the development of cross platform projects and we show, how we used CMake to create an OpenGL application as a demonstrator for a windowed application running on Windows, Linux and Mac OS X as well as a platform independent camera interface as an example for hardware dependent cross platform applications.

No full-text available

Request Full-text Paper PDF

To read the full-text of this research,
you can request a copy directly from the authors.

... It is therefore advisable to use a build-system that analyses the environment and sets respective flags automatically. As of version 1.2, SeqAn supports CMake 21 , the de-facto standard for cross-platform C and C ++ projects (Wojtczyk and Knoll, 2008). ...
... SeqAn3 can be used without a build system and required dependencies are also detected from within the source code. Nevertheless, a CMake module is provided since CMake is arguably the most important build system for C ++ applications (Wojtczyk and Knoll, 2008). This module enables easy integration of SeqAn3 into CMake-based applications and it is simpler to use than manually invoking the compiler, because it takes care of setting certain required flags (e.g. ...
Thesis
Full-text available
This thesis introduces SeqAn3, a new software library built with Modern C++ to solve problems from the domain of sequence analysis in bioinformatics. It discusses previous versions of the library in detail and explains the importance of highly performing programming languages like C++. Complexity in the design of the library and of the programming language itself are identified as the major obstacles to user satisfaction, widespread adoption and long-term viability of the project. Therefore, based on very fundamental changes in the C++ programming language, a new library design is formulated and implemented. Its impact is showcased by porting the local aligner called Lambda from SeqAn2 to SeqAn3. Both, the library and the application are highly relevant in practice and prove that simpler and more compact solutions are possible. This thesis documents the process of creating said software, contributing vital information to the fields of research software engineering, library design and to a certain degree also applied programming language research. As one of the first larger projects to be designed fully around C++20 features, it has instructive value beyond bioinformatics.
... The platform software will include eventually implementation of dependent snippets for the most popular operating systems. This will allow to build a software package based on properly designed shell script program automating compilation process (make file) on most commonly used operating systems without the need of additional platform functionality modification (cross compiling) [1]. A large relationship factor will be determined by the need of build mentioned mechanisms and direct links with the hardware. ...
... Pliki konfigurujące poprawną kompilację (ang. makefiles) są generowane za pomocą CMake w wersji 2.8.10 [1]. System Linux Debian dostarcza szereg mechanizmów komunikacji wewnątrzsystemowej: łącza (potoki) nazwane i nienazwane, pamięć współdzieloną, kolejki itp. ...
... Qt framework predstavlja nadogradnju na C++ programski jezik, koja se sastoji od skupa klasa koje abstrahuju mogućnosti konkretne platforme, podršku za jednostavnu implementaciju arhitekture aplikacije zasnovane na reagovanju na dogaĎaje (engl. Observer pattern) putem koncepta signala i slotova, te meta kompajlera koji parsira Qt makro-e i na taj način nadograĎuje C++ jezik sa mogućnostima kao što su introspekcija i asinhrono pozivanje metoda [8]. ...
Conference Paper
Full-text available
U ovom radu, predložen je način za realizaciju sistema za kontinualni prikaz podataka putem virtuelnih instrumenata na uređajima kao što su pametni telefoni i tableti, čiju odliku predstavlja raznovrsnost operativnih sistema i njihova međusobna nekompatibilnost. Cilj je razviti jednu multiplatformsku aplikaciju koja bi se sastojala od univerzalnog prenosivog koda, koji se kompajliranjem za svaku od ciljanih platformi u potpunosti prilagođava istoj. Na ovaj način aplikacija konzistentno zadržava funkcionalnosti na svim podržanim platformama, bez potrebe za izmenama koda kako bi se postigla kompatibilnost sa specifičnostima pojedine platforme. Ovo je postignuto upotrebom C++ jezika čiji su standardizovani kompajleri dostupni na gotovo svim računarskim sistemima, uz pratnju multiplatformskog Qt framework-a za realizovanje interakcije sa korisnikom.
... The reasons for this include the large number of different APIs and the continuous change in operating systems and hardware [1]. Techniques proposed for facilitating cross-platform software development include, for instance, reflection and platform-independent component descriptions [1], the use of virtualization for effortless build and testing activities [2], and the systematic abstraction of the work phases in the build tool-chain [3]. The special requirements of mobile middleware are also discussed in the literature. ...
Article
Full-text available
We describe and analyze the experiences from a cross-platform mobile middleware project. Our aim is to identify best practices and provide guidelines for solving similar problems in the context of cross-platform-targeted programming in mobile as well as other environments. The main deliverable of the observed project was a cross-platform implementation of a protocol for maintaining DHT-based peer-to-peer (P2P) networks, with an emphasis on mobile operation. The target platforms of the software were Symbian OS, mobile Maemo Linux, and desktop/server Linux distributions. Considering the large number of incompatible mobile platforms in the market, the fluency of cross-platform mobile software development is of particular importance. The observations in our work include the importance of maintaining the relevant conventions of the various platforms in the code and understanding the asymmetric difficulty in porting code between different platforms. We also determine the amount of cross-platform support related code in an example software module.
... The LAPACK library [20] is used for linear algebra routines. Mocapy++ uses CMake [21] to locate packages and configure the build system and can be used either as a static or shared library. The package includes a Doxygen configuration file for HTML formatted documentation of the source code. ...
Article
Full-text available
Mocapy++ is a toolkit for parameter learning and inference in dynamic Bayesian networks (DBNs). It supports a wide range of DBN architectures and probability distributions, including distributions from directional statistics (the statistics of angles, directions and orientations). The program package is freely available under the GNU General Public Licence (GPL) from SourceForge http://sourceforge.net/projects/mocapy. The package contains the source for building the Mocapy++ library, several usage examples and the user manual. Mocapy++ is especially suitable for constructing probabilistic models of biomolecular structure, due to its support for directional statistics. In particular, it supports the Kent distribution on the sphere and the bivariate von Mises distribution on the torus. These distributions have proven useful to formulate probabilistic models of protein and RNA structure in atomic detail.
Chapter
This chapter gives a brief overview of the SeqAn library, important design goals and programming principles, as well as an analysis of in how far these were reached. I will discuss all aspects that I deem necessary to understanding the design and development process of SeqAn3.
Chapter
This chapter integrates the results of Chaps. 2 and 3 into a new library design as well as covering questions relating to SeqAn3 as a project and its interactions with other libraries and applications.
Article
Full-text available
Software portability is gaining importance worldwide as it adds value by increasing the shelf life of a software application. One aspect of portability deals with porting software across multiple operating systems. Amongst the available, Windows and Linux are widely used operating systems. There are various methods for porting a software tool or application developed in Windows to Linux, however, very less has been written about methods to port Linux applications to Windows. Our paper highlights some popular methods for porting a software application written in C from Linux to Windows. The technique emphasized in this paper provides a simple menu driven environment which assists a person completely unaware of Linux to port a C application efficiently to Windows. Our paper explores all aspects of how one can systematically port C application developed on Linux, gain access to C source code on Windows, handle issues related to standard header files, libraries, file translations, compiling, linking, debugging and distribution with the help of a case study. The case study addresses issues related to porting huge C application composed of multiple executable modules with each module involving multiple C files. The paper also highlights the Windows equivalents of Linux command line utilities or tools that may be required for functional verification and debugging.
Conference Paper
Robots are deployed to perform repeatable as well as hazardous tasks because of their inherent safety, reliability, consistency and accuracy. Recently robots are manipulated remotely using the binocular stereo vision. In this paper, we propose and implement a real-time stereoscopic viewer for telerobotics using open source software. We manipulate the KUKA KR-6 robot remotely using the Phantom haptic device. We assemble our stereo camera using a pair of IP cameras. We make use of the GStreamer multimedia framework for capturing and processing image streams coming from these IP cameras. We utilize the OpenCV library for camera calibration, stereo calibration and real-time stereo rectification. We extend predefined widgets from the Qt framework with our own widgets for the OpenGL based Quad buffering. We apply the software engineering design patterns for development of our in-house stereoscopic viewer. We also discuss the stereo vision using the DLP Link, the NVIDIA 3D Vision and the NVIDIA 3D Vision Pro with their pros and cons.
Conference Paper
Searching efficiency in information classification is very important and this paper presents a novel parameter model based on the experiences from digital library resources database to enhance the result accuracy rate and resolve the problem, which most literature searching systems cannot run well in different operating systems. On the basement of the mapping relationships between Dublin core fields and MARC fields, a cross-platform prototype system is designed and implemented. Some experiments validated that it was a beneficial attempt for knowledge acquisition.
Article
Full-text available
In this paper we propose a general, object-oriented software architecture for model-based visual tracking. The library is general purpose with respect to object model, estimated pose parameters, visual modalities employed, number of cameras and objects, and tracking methodology. The base class structure provides the necessary building blocks for implementing a wide variety of both known and novel tracking systems, integrating different visual modalities, like as color, motion, edge maps etc., in a multi-level fashion, ranging from pixel-level segmentation, up to local features matching and maximum-likelihood object pose estimation. The proposed structure allows integrating known data association algorithms for simultaneous, multiple object tracking tasks, as well as data fusion techniques for robust, multi-sensor tracking; within these contexts, parallelization of each tracking algorithm can as well be easily accomplished. Application of the proposed architecture is demonstrated through the definition and practical implementation of several tasks, all specified in terms of a self-contained description language.
Conference Paper
Full-text available
Airbase logistics simulation analyses have historically been done using large monolithic software models, which are not well documented in terms of algorithms used, have no user friendly interfaces, provide little in the way of postprocessing and graphical display of simulation results, and allow limited flexibility to modify the algorithms. The Integrated Model Development Environment (IMDE) addresses these problems using object-oriented design and rapid prototyping philosophies. The environment is written in C++, the simulation elements are written in MODSIM II and stored using the VERSANT object-oriented database management system (OODBMS), and the user interface is designed iteratively using devGuide from Sun Microsystems
Article
The book is an introduction to the idea of design patterns in software engineering, and a catalog of twenty-three common patterns. The nice thing is, most experienced OOP designers will find out they've known about patterns all along. It's just that they've never considered them as such, or tried to centralize the idea behind a given pattern so that it will be easily reusable.
Visual Studio Developer Cen-ter
  • Microsoft Corporation
Microsoft Corporation. Visual Studio Developer Cen-ter. http://msdn.microsoft.com/en-us/ vstudio/default.aspx.
Qt Cross-Platform Application Framework
  • Trolltech
libdc1394: The API for IEEE1394 / Firewire cameras
  • D Douxchamps
CoinSD - 3D Graphics Developer Kit
  • Sim Kongsberg
  • As
Standard Template Library Programmer's Guide
  • Silicon Graphics
  • Inc
The Road to KDE 4: CMake, a New Build System for KDE
  • T Unrau
CMU 1394 Digital Camera Driver
  • C Baker
qiew-a minimalistic and portable VRML/Inventor Viewer
  • M Wojtczyk