Porting an existing Qt-based Windows only application to Mac OS X - - PowerPoint PPT Presentation

porting an existing qt based windows only application to
SMART_READER_LITE
LIVE PREVIEW

Porting an existing Qt-based Windows only application to Mac OS X - - PowerPoint PPT Presentation

Porting an existing Qt-based Windows only application to Mac OS X Overview Introduction Where we started Apple Mac an unknown country With a little help from a friend Communication Version Control System


slide-1
SLIDE 1

Porting an existing Qt-based Windows only application to Mac OS X

slide-2
SLIDE 2

Overview

  • Introduction
  • Where we started
  • Apple Mac – an unknown country
  • With a little help from a “friend”
  • Communication
  • Version Control System
  • BuildSystem
  • Compiler
  • IDE
  • Customer Support
  • Questions?
slide-3
SLIDE 3

Introduction

  • Name: Sven Bergner
  • Age: 38
  • Profession: Software-Engineer
  • Qt-Experience: more than 10 years
  • Company: Akademische Arbeitsgemeinschaft Verlag
  • Wolters Kluwer Deutschland
  • Project: Steuertipps - Steuer-Spar-Erklärung
  • Hobbies: Movies, Books, Music, Guitars
slide-4
SLIDE 4

Where we started

  • Existing project started 17 years ago
  • ca. 300.000 LOC
  • Qt 4.7 with Q3Support
  • STL, MFC, Windows-API
  • Windows as only target
  • Visual Studio 2008
  • TFS
  • Relation between Qt:Non-Qt – 85%:15%
  • Print-System is Win-API only
  • No experience on Mac OS X or Mac hardware
slide-5
SLIDE 5

Apple Mac – an unknown country

  • We had to learn many new things
  • New hardware
  • MacBook Pro
  • 13”
  • 15”
  • 17”
  • Mac Mini as remote testing system
slide-6
SLIDE 6

Apple Mac – an unknown country

  • Mac OS X Versions
  • 10.5
  • Had some users in Germany
  • But we can't support it
  • 10.6
  • The oldest version we can support
  • Start of development
slide-7
SLIDE 7

Apple Mac – an unknown country

  • New Mac OS X Versions
  • 10.7
  • Arrised while we were doing the fjrst port
  • Our new Macs came with that pre-installed
  • Changed its behaviour in some points against 10.6
  • Introduced GateKeeper but not active by default
  • 10.8
  • Comes with GateKeeper activated by default
  • Makes it harder to get our AppBundle into the AppStore
  • Updated Version of XCode removes all commandline compiler and linker

tools

slide-8
SLIDE 8

Apple Mac – an unknown country

  • Getting into the AppStore
  • Successful Apps have to be sold via AppStore
  • High barrier to get there
  • Reject mails are hard to understand
  • Some kind of try 'n' error
  • Apple is not very patient
  • You are spamming the AppStore!
  • No nested AppBundles allowed
slide-9
SLIDE 9

Apple Mac – an unknown country

  • Getting into the AppStore
  • Successful Apps have to be sold via AppStore
  • High barrier to get there
  • Reject mails are hard to understand
  • Some kind of try 'n' error
  • Apple is not very patient
  • You are spamming the AppStore!
  • No nested AppBundles allowed
slide-10
SLIDE 10

Apple Mac – an unknown country

  • Visual differences between Windows and Mac
  • SSE-specifjc styles on Windows
  • Correct look 'n' feel on Mac
slide-11
SLIDE 11

Apple Mac – an unknown country

  • Character encoding
  • UTF-8 on Mac
  • CP1252 on Windows
  • Case sensitive fjlesystem
  • Not on Windows
  • Not default on Mac
  • But it is possible
  • Users use it
slide-12
SLIDE 12

With a little help from a “friend”

  • Don't try this alone!
  • Ask an expert for help
  • Saves your time, nerves and money
  • We asked KDAB for help
  • But there are others, too ;-)
slide-13
SLIDE 13

With a little help from a “friend” Communication

  • Contact to your helping hand is mandatory
  • IRC
  • Short response time
  • Not annoying
  • Jabber-Protocol with history
  • Keeps everybody on track
  • Adium IRC-Client on Mac
  • Pidgeon on Windows
slide-14
SLIDE 14

With a little help from a “friend” Version Control System

  • Working on the same codebase at the same time
  • Far away from each other
  • We use TFS on Windows
  • No TFS-Support on Mac
slide-15
SLIDE 15

With a little help from a “friend” Version Control System

  • Our solution:
  • Using SVN-Bridge
  • Problems:
  • Repository gets out of sync by some operations
  • Renaming or deleting fjles
  • Check out small parts of your project
  • Don't include more than one branch in your folder structure
slide-16
SLIDE 16

BuildSystem Compiler

  • XCode is needed for cmdline tools
  • Compiler is version-specifjc
  • gcc
  • llvm
  • Smallest C++-subset needed between
  • gcc
  • llvm
  • Visual Studio 2010
slide-17
SLIDE 17

BuildSystem IDE

  • Windows Microsoft Visual Studio 2010
  • nmake
  • vcxproj-fjles
  • Mac Qt Creator 2.4/2.5
  • make
  • qmake pro-fjles
slide-18
SLIDE 18

BuildSystem IDE

  • Keep both fjles in sync
  • Not compatible
  • Do it manually
  • Qt-add-in only for inital conversion
  • We can't use shadowbuild
  • Release- and Debug-Build
slide-19
SLIDE 19

BuildSystem IDE

  • Think about using cmake
  • Pro: Better dependency resolution
  • Contra: Limited Qt Creator Support
slide-20
SLIDE 20

Customer Support

  • Netviewer
  • Excellent tool to have a look on customer desktop
  • New Windows version needed to support Mac OS X

10.8

  • Report Tool
  • Used to send system information
slide-21
SLIDE 21

Questions?

slide-22
SLIDE 22

Thank you