SØG - mellem flere end 8 millioner bøger:
Viser: Cross-Platform Development in C++ - Building Mac OS X, Linux, and Windows Applications
Cross-Platform Development in C++ Vital Source e-bog
Syd Logan
(2007)
Cross-Platform Development in C++ Vital Source e-bog
Syd Logan
(2007)
Cross-Platform Development in C++ Vital Source e-bog
Syd Logan
(2007)
Cross-Platform Development in C++
Building Mac OS X, Linux, and Windows Applications
Syd Logan
(2007)
Sprog: Engelsk
Detaljer om varen
- 1. Udgave
- Vital Source 90 day rentals (dynamic pages)
- Udgiver: Pearson International (November 2007)
- ISBN: 9780132702188R90
Bookshelf online: 90 dage fra købsdato.
Bookshelf appen: 90 dage fra købsdato.
Udgiveren oplyser at følgende begrænsninger er gældende for dette produkt:
Print: 2 sider kan printes ad gangen
Copy: højest 2 sider i alt kan kopieres (copy/paste)
Detaljer om varen
- 1. Udgave
- Vital Source 180 day rentals (dynamic pages)
- Udgiver: Pearson International (November 2007)
- ISBN: 9780132702188R180
Bookshelf online: 180 dage fra købsdato.
Bookshelf appen: 180 dage fra købsdato.
Udgiveren oplyser at følgende begrænsninger er gældende for dette produkt:
Print: 2 sider kan printes ad gangen
Copy: højest 2 sider i alt kan kopieres (copy/paste)
Detaljer om varen
- 1. Udgave
- Vital Source 365 day rentals (dynamic pages)
- Udgiver: Pearson International (November 2007)
- ISBN: 9780132702188R365
Bookshelf online: 5 år fra købsdato.
Bookshelf appen: 5 år fra købsdato.
Udgiveren oplyser at følgende begrænsninger er gældende for dette produkt:
Print: 2 sider kan printes ad gangen
Copy: højest 2 sider i alt kan kopieres (copy/paste)
Detaljer om varen
- Paperback: 576 sider
- Udgiver: Addison Wesley Professional (November 2007)
- ISBN: 9780321246424
Cross-Platform Development in C++ is the definitive guide to developing portable C/C++ application code that will run natively on Windows, Macintosh, and Linux/Unix platforms without compromising functionality, usability, or quality.
Long-time Mozilla and Netscape developer Syd Logan systematically addresses all the technical and management challenges associated with software portability from planning and design through coding, testing, and deployment. Drawing on his extensive experience with cross-platform development, Logan thoroughly covers issues ranging from the use of native APIs to the latest strategies for portable GUI development. Along the way, he demonstrates how to achieve feature parity while avoiding the problems inherent to traditional cross-platform development approaches.
This book will be an indispensable resource for every software professional and technical manager who is building new cross-platform software, porting existing C/C++ software, or planning software that may someday require cross-platform support.
Build Cross-Platform Applications without Compromise
Throughout the book, Logan illuminates his techniques with realistic scenarios and extensive, downloadable code examples, including a complete cross-platform GUI toolkit based on Mozilla's XUL that you can download, modify, and learn from. Coverage includes
- Policies and procedures used by Netscape, enabling them to ship Web browsers to millions of users on Windows, Mac OS, and Linux
- Delivering functionality and interfaces that are consistent on all platforms
- Understanding key similarities and differences among leading platform-specific GUI APIs, including Win32/.NET, Cocoa, and Gtk+
- Determining when and when not to use native IDEs and how to limit their impact on portability
- Leveraging standards-based APIs, including POSIX and STL
- Avoiding hidden portability pitfalls associated with floating point, char types, data serialization, and types in C++
- Utilizing platform abstraction libraries such as the Netscape Portable Runtime (NSPR)
- Establishing an effective cross-platform bug reporting and tracking system
- Creating builds for multiple platforms and detecting build failures across platforms when they occur
- Understanding the native runtime environment and its impact on installation
- Utilizing wxWidgets to create multi-platform GUI applications from a single code base
- Thoroughly testing application portability
- Understanding cross-platform GUI toolkit design with Trixul
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. xiii Preface
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. xv Acknowledgments
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. xxiii About the Author
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. xxv Introduction
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.1 Areas That Can Affect Software Portability
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 3 The Role of Abstraction
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 10 1 Policy and Management
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 17 Item
1: Make All of Your Platforms a Priority
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 17 Item
2: Code from a Common Codebase
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 22 Platform Factory Implementations
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 29 Implementation Classes
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 31 Platform-Specific ProcessesImpl Classes
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 32 Creating the Instance Hierarchy
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 42 Organizing the Project in CVS or SVN
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 45 Makefiles and Building the Code
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 49 Item
3: Require Developers to Compile Their Code with Different Compilers
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 52 Item
4: Require Developers to Build Their Code on Multiple Platforms
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 56 Item
5: Test Builds on Each Supported Platform
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 60 Item
6: Pay Attention to Compiler Warnings
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 61 GNU Flags
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 62 Microsoft Visual C++
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 63 2 Build System/Toolchain
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 65 Item
7: Use Whatever Compiler Makes the Most Sense for a Platform
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 66 Item
8: Use Native IDEs When Appropriate
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 67 Item
9: Install and Use Cygwin on Windows
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 71 Item
10: Use a Cross-Platform Make System
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 76 Make
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 77 Building on Windows
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 81 Autoconf/Automake
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 87 Imake
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 91 Installing on Mac OS X
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 91 Installing on Windows
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 91 Using Imake, an Example
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 93 Imakefiles
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 94 Building a Complete Program from Multiple Sources
.
.
.
.
.
.
.
.
. 95 Overriding Defaults with site.def
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 99 Eliminating #ifdefs in Code
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 101 Files Used by Imake
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 107 Building Projects with Subdirectories
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 108 Building Debug
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 130 3 Software Configuration Management
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 131 Item
11: Use a Cross-Platform Bug Reporting and Tracking System
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 132 Accessibility
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 133 Ability to Track Platform-Specific Bugs
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 133 Bugzilla
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 133 Item
12: Set Up a Tinderbox
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 140 Item
13: Use CVS or Subversion to Manage Source Code
.
.
.
.
.
.
. 147 Setting Up and Using CVS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 152 Item
14: Use Patch .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 157 An Example
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 158 Patch Options
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 161 Dealing with Rejects
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 162 Patch and Cross-Platform Development
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 163 4 Installation and Deployment
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 165 Item
15: Provide Support for Native Installers
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 165 XPInstall
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 166 Platform Installs
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 170 5 Operating System Interfaces and Libraries
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 221 Item
16: Use Standards-Based APIs (For Example, POSIX)
.
.
.
.
.
. 222 POSIX
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 222 Support for POSIX, SVID, XPG, and BSD
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 226 Using Standards Support in GCC
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 227 Microsoft Runtime Library Support for POSIX
.
.
.
.
.
.
.
.
.
.
.
. 231 Using GCC on Microsoft Windows
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 234 Deciding Which Standards to Support
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 240 Item
17: Consider Using a Platform Abstraction Library Such as NSPR
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 242 Why NSPR?
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 242 NSPR Basics
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 245 Threads
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 249 Additional NSPR Functionality
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 260 6 Miscellaneous Portability Topics
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 273 Item
18: Take Care When Using Floating Point
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 274 Don''t Serialize Floating-Point Values as Binary
.
.
.
.
.
.
.
.
.
.
.
. 276 Equality
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 277 Item
19: Be Explicit Regarding the Sign of Char Types
.
.
.
.
.
.
.
.
. 278 Item
20: Avoid the Serialization of Binary Data
.
.
.
.
.
.
.
.
.
.
.
.
.
. 280 Item
21: Avoid Problems Related to the Size and Organization of Types
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 293 Size of Integer Types
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.