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.
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.
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).
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.
Move beyond basic games and explore the limits of AndEngine About This Book Extend the basic AndEngine features without modifying any of AndEngine's code Understand advanced technologies and gain the skills to create the ultimate games in AndEngine Theory supported with practical examples to stimulate your imagination and creativity Who This Book Is For This book is aimed at developers who have gone through all the basic AndEngine tutorials and books, and are looking for something more. It's also very suitable for developers with knowledge of other game engines who are looking to develop with AndEngine. Knowledge of Java, C++ and Android development are a prerequisite for getting the most out of this book. What You Will Learn Extend AndEngine to use and render 3D models Integrate and use various physics engines with AndEngine Advanced animations and their implementation in AndEngine Lighting theory and its application for both 2D and 3D objects Using skeletal animation with AndEngine Use GLSL shaders with AndEngine for effects and anti-aliasing Add sounds and effects to AndEngine using both basic and 3D audio libraries Efficient network implementations with AndEngine for multi-players In Detail AndEngine is a popular and easy-to-use game framework, best suited for Android game development. After learning the basics of creating an Android game using AndEngine it's time you move beyond the basics to explore further. For this you need to understand the theory behind many of the technologies AndEngine uses. This book aims to provide all the skills and tools you need to learn more about Android game development using AndEngine. With this book you will get a quick overview of the basics of AndEngine and Android application development. From there, you will learn how to use 3D models in a 2D scene, render a visual representation of a scene's objects, and create interaction between these objects. You will explore frame-based animations and learn to use skeletal animations. As the book progresses, you will be guided through exploring all the relevant aspects of rendering graphics with OpenGL ES, generating audio using OpenSL ES and OpenAL, making the best use of Android's network API, implementing anti-aliasing algorithms, shaders, dynamic lighting and much more. With all this, you will be ready to enhance the look and feel of your game with its user interface, sound effects and background music. After an in-depth study of 2D and 3D worlds and multi-player implementations, you will be a master in AndEngine and Android game development. Style and approach This book takes an in-depth tour of the many aspects of Android game development with the use of AndEngine. Each topic is covered extensively to act both as a practical guide as well as a reference.