New in C++Builder/Delphi 10.4.1 IDE: Package LibSuffix Auto Choice

The C++Builder and Delphi Project | Options | Description page allows developers to

  • Choose and Set build target configurations
  • Write a description for the package
  • Set strings for the package library filename’s prefix, suffix and version
  • Define the use of the package (designtime, runtime or both)
  • Specify how the package is built (rebuild as needed or explicit rebuild)

In previous versions (version 10.3 and earlier) of C++Builder and Delphi developers building packages needed to manually set their package’s library suffix setting. The DocWiki “What’s new in version 10.4.1” mentions a new IDE projects option for setting the library suffix:

“Package AUTO libsuffix: packages can now have an automatic version suffix, instead of manually updating and specifying the right version suffix with each new release. (The compiler quietly supported this in 10.4, but full support for the feature in the IDE and package project settings is introduced in 10.4.1.)”

While you can still set a string for the library filename suffix, selecting the new ComboBox choice, “$(Auto)”, allows the compiler to set the suffix to match the package build version used by the compiler. For each target build (debug and release) and OS platform the resulting package filename follows a pattern:

Win32 and Win64: <prefix>Package1<suffix>.<version>.bpl
Android: <prefix>Package1<suffix>.so.<version>
macOS and iOS: <prefix>Package1<suffix>.<version>.dylib

Creating and building a package with Delphi and C++Builder version 10.4.1, choosing the $Auto option for the suffix and setting other Description page settings results in a filename like the test package project images shown below.

C++Builder and Delphi also support package-specific compiler directives to include in a package project’s source code.

C++Builder Product Information

C++Builder Product Page – Native Apps that Perform. Build Windows C++ Apps 10x Faster with Less Code
C++Builder Product Editions – C++Builder is available in four editions – Professional, Enterprise, Architect and Community (free). C++Builder is also available as part of the RAD Studio development suite.

C++Builder’s Clang-enhanced ISO C++ compilers, Dinkumware Standard C++ Library and Boost Libraries in version 10.4.1 Sydney

C++ developers often ask about ISO C++ language support in releases of Embarcadero C++Builder. This post includes links and information about the C++ compilers, Dinkumware Standard C++ libraries and Boost libraries that are included in C++Builder 10.4 Sydney Release 1.

The latest release of C++Builder is 10.4 Sydney Release 1 (v10.4.1). Version 10.4.1 includes C++ tool chain and RTL improvements in the Win64 debugger, linker, exception handling and general quality. The DocWiki contains a list of feature enhancements and developer reported issues fixed in the IDE, VCL, FMX, and RTL. RAD Studio 10.4.1 also includes all fixes from 10.4 Patch 1, Patch 2, and Patch 3.

C++Builder Clang-Enhanced Compilers

C++Builder 10.4 Sydney Clang-enhanced compiler Clang and LLVN version information is as follows:

CompilerPlatformClang VersionLLVM Version
BCC32C32-bit Windows5.05.0
BCC32X32-bit Windows5.05.0
BCC6464-bit Windows5.05.0
BCCIOSARM32-bit iOS3.33.3
BCCIOSARM6464-bit iOS3.33.5
BCCAARMAndroid3.33.3

You can find Clang/LLVM ISO C++ Status information at  https://clang.llvm.org/cxx_status.html

  • Clang 3.3 and later implement all of the ISO C++ 2011 standard.
  • Clang 3.4 and later implement all of the ISO C++ 2014 standard.
  • Clang 5 and later implement all the features of the ISO C++ 2017 standard.

If you need your C++ application to test for Clang version use at compile time use the following code:

#if defined(__clang__)
  #if (__clang_major__ == 5 && __clang_minor__ == 0)
    #include <clang5.0\xmmintrin.h>
  #elif (__clang_major__ == 3 && __clang_minor__ == 3)
    #include <clang3.3\xmmintrin.h>
  #else
    #error "Unable to determine correct clang header version"
  #endif
#else
    #error "Only supported for clang compilers"
#endif

David Millington, Product Manager for C++Builder keeps the Embarcadero C++Builder information updated on the C++ Reference compiler support page. On this page you can look at the different ISO C++ language releases to see what many compilers support in their compiler releases.

Dinkumware Standard Library

The Dinkumware Standard C++ Library is the implementation of the C++ Standard Library that C++Builder uses for applications on the 32-bit Windows, 64-bit Windows and macOS target platforms.

The libraries include containers such as vectors, lists, sets, maps, and bitsets. Dinkumware also includes algorithms for common operations, such as sorting a container or searching inside a container.

Dinkumware version 8.03a is available specifically for C++ application development on target platforms that support the Clang enhanced compilers. Dinkumware version 5.01 is provided to support the classic C++ compiler.

Target PlatformCompilerC++ StandardDinkumware Version
32-bit WindowsBCC32C++98/035.01
BCC32CC++178.03a
BCC32XC++178.03a
64-bit WindowsBCC64C++178.03a
Note: C++Builder does not currently support the use of the Dinkumware Standard C++ Library on mobile platforms. On mobile platforms, the SDK’s standard library platform is used.

Boost Libraries

C++Builder supports different versions of the Boost libraries depending on the C++ compiler that you use to compile your application.

PlatformCompilerBoost Version
32-bit WindowsBCC321.39.0
BCC32C1.70.0
64-bit WindowsBCC641.70.0

To install the Boost libraries you need, use the IDE’s Tools | GetIt Package Manager menu and select one or more of the Boost packages.

See Also

C++ Reference

C++Builder Developer’s Guide

Dinkumware Standard C++ Library

Boost Libraries

Supported Target Platforms

C++Builder Product Page – Native Apps that Perform. Build Windows C++ Apps 10x Faster with Less Code

C++Builder Product Editions – C++Builder is available in four editions – Professional, Enterprise, Architect and Community (free). C++Builder is also available as part of the RAD Studio development suite.

Desktop First UX Summit – Sept 16th & 17th, 2020

The FREE Desktop First UX Summit is your chance to learn from the best UI and UX industry experts and practitioners and take your desktop applications to the next level.

Move beyond the Mobile-First design of just stretching a small UI to fill a desktop screen. Learn how to take the most advantage of the most powerful platform and make your users more productive.
Sponsored by Embarcadero’s RAD Studio 10.4 Sydney.

Here are the first two of many talks being given at the Desktop First UX Summit:

Register Now

View the Schedule