Author: Stanley Ho Professor of Microelectronics in Electrical and Computer Engineering Ken Martin
Publisher: Kitware, Incorporated
CMake is an open-source build tool enabling collaboration among software developers working on distinct platforms by using a common build specification to drive their native build tools. Mastering CMake explains how to use the CMake suite of tools, including CTest and CPack, to develop, build, test, and package software for distribution. It covers use of the command-line and GUI tools on Linux (UNIX), Microsoft Windows, and Mac OS X. This book also contains a guide for converting projects to CMake and writing CMake code to specify build rules to compile sources, create static and shared libraries, link executables, run custom commands, run tests, and install artifacts. It also includes a copy of key portions of the official reference documentation.
This document constitutes a detailed set of lecture slides on programming using the C++ programming language. The topics covered are quite broad, including the history of C++, the C++ language itself, the C++ standard library and various other libraries, and software tools, as well as numerous other programming-related topics. Coverage of C++ is current with the C++14 standard. Many aspects of the C++ language are covered from introductory to more advanced. This material includes: language basics (objects, types, values, operators, expressions, control-flow constructs, functions, and namespaces), classes, templates (function, class, alias, and variable templates; template specialization; and variadic templates), lambda expressions, inheritance and run-time polymorphism, exceptions (exception safety, RAII, and smart pointers), rvalue references (move semantics and perfect forwarding), concurrency (sequential consistency, atomic memory operations, data races; threads, mutexes, condition variables, promises and futures, atomics, and fences; happens-before and synchronizes-with relationships; and sequentially-consistent and other memory models). A number of best practices, tips, and idioms regarding the use of the language are also presented. Some aspects of the C++ standard library are covered, including: containers, iterators, and algorithms; the std::vector and std::basic_string classes; I/O streams; time measurement; and smart pointers. Various general programming-related topics are also presented, such as material on: good programming practices, finite-precision arithmetic, software documentation, software build tools (such as CMake and Make), and version control systems (such as Git).
Building, testing, and packaging modular software with modern CMake
Author: Radovan Bast
Publisher: Packt Publishing Ltd
Learn CMake through a series of task-based recipes that provide you with practical, simple, and ready-to-use CMake solutions for your code Key Features Learn to configure, build, test, and package software written in C, C++, and Fortran Progress from simple to advanced tasks with examples tested on Linux, macOS, and Windows Manage code complexity and library dependencies with reusable CMake building blocks Book Description CMake is cross-platform, open-source software for managing the build process in a portable fashion. This book features a collection of recipes and building blocks with tips and techniques for working with CMake, CTest, CPack, and CDash. CMake Cookbook includes real-world examples in the form of recipes that cover different ways to structure, configure, build, and test small- to large-scale code projects. You will learn to use CMake's command-line tools and master modern CMake practices for configuring, building, and testing binaries and libraries. With this book, you will be able to work with external libraries and structure your own projects in a modular and reusable way. You will be well-equipped to generate native build scripts for Linux, MacOS, and Windows, simplify and refactor projects using CMake, and port projects to CMake. What you will learn Configure, build, test, and install code projects using CMake Detect operating systems, processors, libraries, files, and programs for conditional compilation Increase the portability of your code Refactor a large codebase into modules with the help of CMake Build multi-language projects Know where and how to tweak CMake configuration files written by somebody else Package projects for distribution Port projects to CMake Who this book is for If you are a software developer keen to manage build systems using CMake or would like to understand and modify CMake code written by others, this book is for you. A basic knowledge of C++, C, or Fortran is required to understand the topics covered in this book.
Diese praxisnahe Einführung der angewandten Robotik erläutert die Konstruktion von Personal Robots und ihrer Steuerung durch das Open-Source-Framework ROS (Robot Operating System).Die ersten Schritte geht der Leser mit einem virtuellen Prototyp am Rechner. Im Anschluss zeigt der Autor am Beispiel eines Bot-Modells, was bei der Planung, dem Aufbau und dem Betrieb von selbst entworfenen Robotern zu beachten ist. Dabei wird die Einbindung von verschiedenen Aktoren und Sensoren erklärt. So eröffnet das Buch das Potential von ROS als Steuerungs-Framework. Das Buch eröffnet auf diese Weise fortgeschrittenen Anwendern genauso wie anspruchsvollen Makern den Zugang zu professionellen Anwendungen wie:• direkte und sensorbasierte Navigation• Gesichts- und Objekterkennung• räumliches Scannen mit Lasertechnik (LiDAR) Darüber hinaus versetzt das Buch den Leser in die Lage, Roboter von namhaften Unternehmen, die ROS verwenden, zu verstehen und zu steuern.
Unleash the power of Android Studio 3 to develop mobile applications faster and efficiently. About This Book Use Android Studio not just as an IDE but as a complete testing and build solution Produce customized APKs with Gradle to suit various versions of an app, such as test versions and free versions of an otherwise paid app. Explore all aspects of UI development and testing using working XML and Java examples. Learn seamless migration from Eclipse and other development platforms to Android Studio. Who This Book Is For This book targets developers, with experience of developing for Android, who are new to Android Studio or wish to migrate from another IDE such as Eclipse. This book will show you how to get the utmost from this powerful tool. What You Will Learn Create styles, themes, and material designs Set up, configure, and run virtual devices using the AVD manager Improve the design of your application using support libraries Learn about GitHub libraries Use emulators to design layouts for a wide variety of devices, including wearables. Improve application performance in terms of memory, speed, and power usage In Detail Android Studio is an Integrated Development Environment (IDE) designed for developing Android apps. As with most development processes, Android keeps resources and logic nicely separated, and so this book covers the management of imagery and other resources, and the development and testing tools provided by the IDE. After introducing the software, the book moves straight into UI development using the sophisticated, WYSIWYG layout editor and XML code to design and test complex interfaces for a wide variety of screen configurations. With activity design covered, the book continues to guide the reader through application logic development, exploring the latest APIs provided by the SDK. Each topic will be demonstrated by working code samples that can be run on a device or emulator. One of Android Studio's greatest features is the large number of third-party plugins available for it, and throughout the book we will be exploring the most useful of these, along with samples and libraries that can be found on GitHub. The final module of the book deals with the final stages of development: building and distribution. The book concludes by taking the reader through the registration and publication processes required by Google. By the time you have finished the book, you will be able to build faster, smoother, and error-free Android applications, in less time and with fewer complications than you ever thought possible. Style and approach This is a step-by-step guide with examples demonstrating how Android Studio can be used as a complete solution for developing, testing, and deploying apps from start to finish.
Each chapter in the book is an individual project and each project is constructed with step-by-step instructions, clearly explained code, and includes the necessary screenshots. You should have basic OpenCV and C/C++ programming experience before reading this book, as it is aimed at Computer Science graduates, researchers, and computer vision experts widening their expertise.
Practical Computer Vision Projects About This Book Updated for OpenCV 3, this book covers new features that will help you unlock the full potential of OpenCV 3 Written by a team of 7 experts, each chapter explores a new aspect of OpenCV to help you make amazing computer-vision aware applications Project-based approach with each chapter being a complete tutorial, showing you how to apply OpenCV to solve complete problems Who This Book Is For This book is for those who have a basic knowledge of OpenCV and are competent C++ programmers. You need to have an understanding of some of the more theoretical/mathematical concepts, as we move quite quickly throughout the book. What You Will Learn Execute basic image processing operations and cartoonify an image Build an OpenCV project natively with Raspberry Pi and cross-compile it for Raspberry Pi.text Extend the natural feature tracking algorithm to support the tracking of multiple image targets on a video Use OpenCV 3's new 3D visualization framework to illustrate the 3D scene geometry Create an application for Automatic Number Plate Recognition (ANPR) using a support vector machine and Artificial Neural Networks Train and predict pattern-recognition algorithms to decide whether an image is a number plate Use POSIT for the six degrees of freedom head pose Train a face recognition database using deep learning and recognize faces from that database In Detail As we become more capable of handling data in every kind, we are becoming more reliant on visual input and what we can do with those self-driving cars, face recognition, and even augmented reality applications and games. This is all powered by Computer Vision. This book will put you straight to work in creating powerful and unique computer vision applications. Each chapter is structured around a central project and deep dives into an important aspect of OpenCV such as facial recognition, image target tracking, making augmented reality applications, the 3D visualization framework, and machine learning. You'll learn how to make AI that can remember and use neural networks to help your applications learn. By the end of the book, you will have created various working prototypes with the projects in the book and will be well versed with the new features of OpenCV3. Style and approach This book takes a project-based approach and helps you learn about the new features by putting them to work by implementing them in your own projects.