Presentation Name / 1 www.ezesoft.com Visual C++ Builds and External Dependencies NAME.

Slides:



Advertisements
Similar presentations
Development Life Cycle using Visual Studio Team Edition for DB Professionals Richard Fennell Engineering Director SQLBits II Birmingham 1 st March 2008.
Advertisements

Introduction to Programming Lecture 2. Today’s Lecture Software Categories Software Categories System Software System Software Application Software Application.
Tahir Nawaz Visual Programming C# Week 2. What is C#? C# (pronounced "C sharp") is an object- oriented language that is used to build applications for.
Object Oriented Software Development 1. Introduction to C# and Visual Studio.
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.
1 ENG236: ENG236: C++ Programming Environment (2) Rocky K. C. Chang THE HONG KONG POLYTECHNIC UNIVERSITY.
A First Program Using C#
Server- Side technologies Client-side vs. Server-side scripts PHP basic ASP.NET basic ColdFusion.
Lecture Roger Sutton CO530 Automation Tools 5: Class Libraries and Assemblies 1.
Microsoft Visual Basic 2005: Reloaded Second Edition
Enabling the ARM Learning in INDIA ARM DEVELOPMENT TOOL SETUP.
Visual Linker Final presentation.
Software Engineering in Robotics Packaging and Deployment of Systems Henrik I. Christensen –
Client Scripting1 Internet Systems Design. Client Scripting2 n “A scripting language is a programming language that is used to manipulate, customize,
Scalable Game Development William Roberts Senior Game Engineer
The Structure of a C++ Program. Outline 1. Separate Compilation 2. The # Preprocessor 3. Declarations and Definitions 4. Organizing Decls & Defs into.
Developing C/C++ applications with the Eclipse CDT David Gallardo.
Old Chapter 10: Programming Tools A Developer’s Candy Store.
Engineering Computing I Chapter 1 – Part A A Tutorial Introduction.
Week 1: THE C# LANGUAGE Chapter 1: Variables and Expressions ➤ Included in Visual Studio.NET ➤ What the.NET Framework is and what it contains ➤ How.NET.
CST320 - Lec 11 Why study compilers? n n Ties lots of things you know together: –Theory (finite automata, grammars) –Data structures –Modularization –Utilization.
Contents 1.Introduction, architecture 2.Live demonstration 3.Extensibility.
Unit-1 Introduction Prepared by: Prof. Harish I Rathod
N from what language did C++ originate? n what’s input, output device? n what’s main memory, memory location, memory address? n what’s a program, data?
PROGRAMMING LANGUAGES FOR WHEN USING QUANT ANALYSIS FOR HIGH FREQUENCY TRADING.
Fortran 95 for the.NET Framework David Bailey
1. 2 Preface In the time since the 1986 edition of this book, the world of compiler design has changed significantly 3.
Introduction to Compilers. Related Area Programming languages Machine architecture Language theory Algorithms Data structures Operating systems Software.
14th Oct 2005CERN AB Controls Development Process of Accelerator Controls Software G.Kruk L.Mestre, V.Paris, S.Oglaza, V. Baggiolini, E.Roux and Application.
11 Computers, C#, XNA, and You Session 1.1. Session Overview  Find out what computers are all about ...and what makes a great programmer  Discover.
Open project in Microsoft Visual Studio → build program in “Release” mode.
Text Introduction to.NET Framework. CONFIDENTIAL Agenda .NET Training – Purpose  What is.NET?  Why.NET?  Advantages  Architecture  Components: CLR,
1 Asstt. Prof Navjot Kaur Computer Dept PRESENTED BY.
Hello world !!! ASCII representation of hello.c.
Maven. Introduction Using Maven (I) – Installing the Maven plugin for Eclipse – Creating a Maven Project – Building the Project Understanding the POM.
Developing SQL/Server database in Visual Studio Introducing SQL /Server Data Tools Peter Lu.Net Practices Director Principle Architect Nexient March 19.
Visual Programming Borland Delphi. Developing Applications Borland Delphi is an object-oriented, visual programming environment to develop 32-bit applications.
The best of WF 4.0 and AppFabric Damir Dobric MVP-Connected System Developer Microsoft Connected System Division Advisor Visual Studio Inner Circle member.
Some of the utilities associated with the development of programs. These program development tools allow users to write and construct programs that the.
Software Engineering Algorithms, Compilers, & Lifecycle.
Introduction To Software Development Environment.
Software Development Languages and Environments. Computer Languages Just as there are many human languages, there are many computer programming languages.
Sung-Dong Kim, Dept. of Computer Engineering, Hansung University Java - Introduction.
Canadian Bioinformatics Workshops
INTRO. To I.T Razan N. AlShihabi
12/29/2017 2:33 PM © Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN.
Jim Fawcett CSE775 - Distributed Objects Spring 2014
Object Oriented Programming in
Agenda:- DevOps Tools Chef Jenkins Puppet Apache Ant Apache Maven Logstash Docker New Relic Gradle Git.
Stress Free Deployments with Octopus Deploy
CSE791 - Distributed Objects, Spring 2002
CMIT100 Chapter 14 - Programming.
CSE775 - Distributed Objects, Spring 2006
What are they? The Package Repository Client is a set of Tcl scripts that are capable of locating, downloading, and installing packages for both Tcl and.
Computer Terms Review from what language did C++ originate?
6/2/2018 4:08 AM BRK3327 Ten things you didn't know about building .NET UWP apps in Visual Studio 2017 Daniel Jacobson Program Manager – Visual Studio.
System Programming and administration
Chapter 2 Setup.
CMPE 152: Compiler Design ANTLR 4 and C++
Coding in the Cloud This slide deck includes recorded video demonstrations of content from the live presentation. Joon-Yee.
Module 1: Getting Started
Source Code Management
.NET and .NET Core Foot View of .NET Pan Wuming 2017.
Visual Studio 2010 SharePoint Development Tools Overview
SSDT and Database Project Basics
A QUICK START TO OPL IBM ILOG OPL V6.3 > Starting Kit >
Computer Terms Review from what language did C++ originate?
Martin MSBuild Martin
SPL – PS1 Introduction to C++.
Programming Logic and Design Eighth Edition
Presentation transcript:

Presentation Name / 1 Visual C++ Builds and External Dependencies NAME

Presentation Name / 2 About Us  Leader in building and servicing financial technology since 1985; providing “Cloud” solutions since 1996  2,000+ institutions including hedge funds and traditional asset managers  Software and service supporting the full investment lifecycle  Features include trade order and execution management; compliance; portfolio accounting; and real-time market data as an internet service  More than 25 years of working with Microsoft Visual C++  Current software stack is mostly C++ native code on windows

Presentation Name / 3 An Evolution of Builds

Presentation Name / 4

Presentation Name / 5

Presentation Name / 6

Presentation Name / 7

Presentation Name / 8

Presentation Name / 9

Presentation Name / 10

Presentation Name / 11 End of the line  Version control is tasked with storing all binaries and third party libraries, and becomes unmanageable  Build are difficult to reproduce  Build process becomes tightly coupled to the version control system

Presentation Name / 12 Why are C++ builds so hard?  Libraries come simply as header files and some kind of binary lib, with no structured manifest.  Differences between versions of the compiler and standard library will break binary compatibility.  C++ projects are often targeting multiple platforms (32bit, 64bit) or operating systems (Windows, Linux).

Presentation Name / 13 The pre-processor and parser  The C++ parser is single pass, so all symbols must be declared before they are used, and order matters.  The compiler has no knowledge of libraries, and instead depends on the preprocessor to unroll all includes and present it with a single text stream. Unlike modern languages that can provide the compiler with a structured manifest.  With its use of #ifdefs, #defines, #includes, etc… the preprocessor can be very complex.  The behavior of the preprocessor and compiler is very dependent on the environment in which it runs, including system configuration, compiler version, “system” header files, and environment variables.

Presentation Name / 14 The linker  Dependent on environment variables and system libraries  Object files carry no information about their contents beyond the names of the symbols. The linker cannot verify the correctness of the link beyond matching names.  Every member of an object’s dependency tree must be present and specified for a link to succeed, however there is no way to discover this info without knowing this info ahead of time.

Presentation Name / 15 What’s Next? Dependencies!!!

Presentation Name / 16 What are dependencies  Everything you need to build your application  Code  Headers  Libraries  Pre-Preprocessors  Compilers  Linkers  Tools

Presentation Name / 17 How do we manage dependencies?  There is a whole world of package managers out there for other systems….  What about Visual C++?

Presentation Name / 18 What is NuGet  NuGet is a package manager originally designed to work with Visual Studio and the.net platform.  All NuGet packages are identified by their package ID and their version.  Packages.config lists all the packages for a project.  Packages can come from anywhere  NuGet Packages can have dependencies of their own.  This is the structured metadata we need!

Presentation Name / 19 NuGet for C++  As of version 2.5, NuGet added support for C++ projects.  Originally, NuGet packages just contained dependency files and required the IDE to figure out the correct behavior based on context and file types.  To support C++, NuGet packages have to be able to modify the msbuild scripts for the project.  When a C++ NuGet package is added to a project, any msbuild properties or targets files are imported into the project’s msbuild script.

Presentation Name / 20

Presentation Name / 21 DEMO

Presentation Name / 22 What’s Next?

Presentation Name / 23 Ultimate Reproducibility and Containment  Storing the entire build server environment as metadata.  Compilers and other tools could be distributed as NuGet packages or possibly as docker containers referenced by NuGet packages.  Microsoft seems to be embracing the model, and we might soon see the Microsoft compilers shipped as packages.  Only need your source repository and msbuild to build your application on any machine.

Presentation Name / 24 Q&A