Ravi Mathur January 8, 2015.  What does CMake NOT do? ◦ Doesn’t compile (gcc, MSVC, llvm, make) ◦ Doesn’t manage source code (XCode, Visual Studio) ◦

Slides:



Advertisements
Similar presentations
Makefiles. makefiles Problem: You are working on one part of a large programming project (e. g., MS Word).  It consists of hundreds of individual.c files.
Advertisements

Lecture 3 Getting Started with ITK!. Goals for this lecture Learn how to use Cmake Build ITK Example programs that use ITK.
Android: Hello World Frank Xu Gannon University. Steps Configuration ▫Android SDK ▫Android Development Tools (ADT)  Eclipse plug-in ▫Android SDK and.
ECE 353 WinAVR and C Debugging Tutorial By Adam Bailin ECE 353 Fall ‘06.
CS 1400 Using Microsoft Visual Studio 2005 if you don’t have the appropriate appendix.
Software Library Configuration 1 Travis Love Technical Service Engineer.
ECLIPSE IDE N AME : A SHOK P ADMARAJU C OURSE : T OPICS ON S OFTWARE E NGINEERING I NSTRUCTOR : D R. S ERGIU D ASCALU.
Introduction to CCSv5. Outline  Intro to CCSv5 Intro to CCSv5  Functional Overview Functional Overview  Perspectives Perspectives  Projects Projects.
Introduction to The Linaro Toolchain Embedded Processors Training Multicore Software Applications Literature Number: SPRPXXX 1.
1 Introduction to Tool chains. 2 Tool chain for the Sitara Family (but it is true for other ARM based devices as well) A tool chain is a collection of.
Software Process, CMake, Dashboards, CPack Bill Hoffman Kitware, Inc.
Debugging, Build and Version Control Rudra Dutta CSC Spring 2007, Section 001.
1 Chapter One A First Program Using C#. 2 Objectives Learn about programming tasks Learn object-oriented programming concepts Learn about the C# programming.
Bogor-Java Environment for Eclipse MSE Presentation II Yong Peng.
Introduction to Hall-D Software February 27, 2009 David Lawrence - JLab.
Java Programming, 3e Concepts and Techniques Chapter 3 Section 65 – Manipulating Data Using Methods – Java Applet.
© 2011 Autodesk CP5239 Demand-Loading AutoCAD®.NET Plug-ins James E. Johnson Synergis Software Sr. CAD Developer.
Makefiles CISC/QCSE 810. BeamApp and Tests in C++ 5 source code files After any modification, changed source needs to be recompiled all object files need.
CSC 215 : Procedural Programming with C C Compilers.
Makefiles. makefiles Problem: You are working on one part of a large programming project (e. g., MS Word).  It consists of hundreds of individual.cpp.
Source Code Control CSE 3902 Matt Boggus. Source code control options for CSE 3902 Must use source code control that is integrated with Visual Studio.
Compiling & Debugging Quick tutorial. What is gcc? Gcc is the GNU Project C compiler A command-line program Gcc takes C source files as input Outputs.
TAMU CSCE 313 (the basics). Basic Unix/Linux programming Accessing CS systems  PuTTY (putty.exe) – a Telnet and SSH client  Common hosts: unix.cs.tamu.edu.
Geant4 Installation Supported platforms:  Scientific Linux with gcc 4.1.2/4.6  Mac Os X 10.7 and 10.8 with gcc 4.21  Windows7 with Visual Studio.
JCreator Tonga Institute of Higher Education. Programming with the command line and notepad is difficult. DOS disadvantages  User Interface (UI) is not.
Lecture Set 2 Part A: Creating an Application with Visual Studio – Solutions, Projects, Files.
Active-HDL Interfaces Building VHPI Applications C Compilation Course 9.
Installing CompuCell3D from source Maciej Swat Biocomplexity Institute, Indiana University.
NA-MIC National Alliance for Medical Image Computing Slicer Building and Deployment Steve Pieper, PhD.
CMake refactoring P. Hristov 19/03/2014. History I  Recursive makefiles (F.Carminati):  Problems in dependencies  Slow  "Recursive Makefiles.
DCDaPS: Digital Content Distribution and Publishing System.
Programming with Visual Studio.NET A short review of the process.
Roll Screen Development Debugging assistance for building Rocks Rolls with screens OSGC, May 2008 Nadya Williams University of Zurich.
Amir Bishara and Dorin Danial Supervisors: Roiy Zysman Dr. Ilana David.
National Center for Supercomputing ApplicationsNational Computational Science Grid Packaging Technology Technical Talk University of Wisconsin Condor/GPT.
Test Specifications A Specification System for Multi-Platform Test Suite Configuration, Build, and Execution Greg Cooksey.
Package & Deploy. OBJECTIVES Package Deploy Way to package.
J.P. Wellisch, CERN/EP/SFT SCRAM Information on SCRAM J.P. Wellisch, C. Williams, S. Ashby.
8 Chapter Eight Server-side Scripts. 8 Chapter Objectives Create dynamic Web pages that retrieve and display database data using Active Server Pages Process.
Java Programming: Advanced Topics1 Introduction to Advanced Java Programming Chapter 1.
Open project in Microsoft Visual Studio → build program in “Release” mode.
Build Tools 1. Building a program for a large project is usually managed by a build tool that controls the various steps involved. These steps may include:
Maven. Introduction Using Maven (I) – Installing the Maven plugin for Eclipse – Creating a Maven Project – Building the Project Understanding the POM.
SimTK 1.0 Workshop Downloads Jack Middleton March 20, 2008.
Import existing part with drawing
CMake: Experience in ALICE P. Hristov 19/06/12. History I Recursive makefiles (F.Carminati): – Problems in dependencies – Slow "Recursive Makefiles.
1 Creative Innovation – Customer Satisfaction – Continual Quality Improvement Accessing and Building Asterisk SCF.
Software development tools
Building New Analytics with Project Alpha. 2 What is Project Alpha? Project Alpha is a code solution “template” that provides a jump start to developing.
CMake - Cross-Platform Make R. Douglas Barbieri Made to Order Software Corporation.
Introduction to CMake, v. 2
Document Docketing.
CSC 215 : Procedural Programming with C
Build and Test system for FairRoot
Automatic Documentation Systems
Chapter 2 Setup.
Quick Start Guide for Visual Studio 2010
Social Media And Global Computing Introduction to Visual Studio
Cmake Primer.
Using Visual Studio and VS Code for Embedded C/C++ Development
Compilers, Make and SubVersion
1. Open Visual Studio 2008.
ms vısual studıo 2008-Introductıon TUTORIAL
Software Installation
Good Testing Practices
Computer Terms Review from what language did C++ originate?
Carthage ios 8 onwards Dependency manager that streamlines the process of integrating the libraries into the project.
Debugging.
Presentation transcript:

Ravi Mathur January 8, 2015

 What does CMake NOT do? ◦ Doesn’t compile (gcc, MSVC, llvm, make) ◦ Doesn’t manage source code (XCode, Visual Studio) ◦ Doesn’t debug (gdb, lldb, Visual Studio)  What does CMake do? ◦ Generates build systems for all major platforms  Makefiles, Visual Studio projects, XCode projects ◦ Manages the generated build systems ◦ Adds layer of abstraction over platform-specific build systems (make, XCode, Visual Studio) 1/8/2015 2

 Build System Maintenance ◦ Adding files: add.cpp filename in CMakeLists.txt ◦ Adding plugins:  Create same folder structure as other plugins  Copy/paste CMakeLists.txt from another plugin, change plugin name and source filenames ◦ Supports many Makefile, XCode, Visual Studio versions  Supports multiple out-of-source builds ◦ Create side-by-side build systems (release, debug, etc.) ◦ Create multiple platform build systems from same source ◦ Delete build folder(s) to clean GMAT folder  Very well supported ◦ Updated multiple times per year (major/minor releases) ◦ Thorough wiki and examples (incl 3 rd -party) ◦ Used in: Clang/LLVM, LAPACK, Qt, KDE, MySQL, … 1/8/2015 3

 CMakeLists.txt input file specifies how the build system should be generated ◦ Named source files (.cpp) and include (.hpp) folders ◦ Build options (plugins, GUI, debug/release, …) ◦ Dependency checks (spice, wxwidgets, matlab, …) ◦ Platform specifics (RPATH, /MP, …)  One CMakeLists.txt file per component/plugin ◦ Specifies inputs for that component ◦ Ideally, only CMakeLists.txt files should be version controlled … build system is generated on the fly 1/8/2015 4

GMAT Directory CMakeLists.txt /plugins CMakeLists.txt / PluginCMakeLists.txt /src CMakeLists.txt /base, /gui, /console CMakeLists.txt /buildCMakeLists.txt 1/8/ Setup default user options, validate dependencies, load subdirectories Load selected plugin subdirectories Create distributable GMAT folder List source files & Header folders, specify output name Load subdirectories

 Generates build system that builds all base & public plugin components ◦ gmatBase, gmatConsole ◦ GUI (untested) ◦ CInterface, Data Interface, DataCallback, EphemPropagator, Estimation, EventLocator, ExtraPropagators, FminconOptimizer (untested), Formation, GeometricMeasurement, GmatFunction, MatlabInterface (untested), ProductionPropagators, SaveCommand, Station 1/8/2015 6

 Show good times… 1/8/2015 7

 Support for GUI, remaining plugins  Support for internal GMAT plugins  Documentation ◦ Add more comments to CMakeLists.txt files ◦ GMAT Wiki for build system  Cleanup, general optimization  Understand use of CPack to package GMAT  Test with XCode (if needed/desired) 1/8/2015 8