General options

The General options category lets you set basic properties of the application executable or library, such as the stack size and whether to export symbols, as well as name and version options for the generated file.

The default dialog for the General options category.

Field descriptions for the General options category

Generate map file
When set, the IDE prints a link map to the build console.
Stack size
Define the stack size, in bytes or kilobytes.
Export symbol options
Define the level of final stripping for your binary, ranging from exporting all symbols, to removing only the debugger symbols, to removing all symbols.
Build goal name
Specify the output filename for the application or library. Defining a name in this field forces the library's shared-object name to match.

By default, a generated application has the same name as the project it's built from. A library has a prefix of lib and a suffix of .a or .so after the project name. In addition, debug variants of applications and libraries have a suffix of _g.

Link against CPP library
(for QNX C++ projects only)
Select the particular C++ library you want to use. QNX Momentics Tool Suite currently ships with these C++ libraries:
  • Default — The standard QNX C++ library, with support for all standard C++ features (exceptions, STL, etc.).
  • Dinkum with exceptions and Dinkum without exceptions — The Dinkum C++ library, with support for exceptions or without.
  • Dinkum Abridged with exceptions and Dinkum Abridged without exceptions — The Dinkum Abridged C++ library, with support for exceptions or without.
  • Dinkum Embedded with exceptions and Dinkum Embedded without exceptions — The Dinkum Embedded C++ library, with support for exceptions or without.
  • GNU with exceptions — The GNU G++ Standard Library, with support for exceptions.
Note: Compiling C++ code without support for exceptions usually results in a faster executable.
Library shared object name
(for build target types that generate a shared object (.so) library file)

Override the shared-object name used in C/C++ library projects. This setting doesn't affect the actual filename.

Note: If you specify a filename in Build goal name, don't use the Library shared object name field.
Library version
(for build target types that generate a shared object (.so) library file)

Select a version number for both the library's shared-object name and filename.

Note: If you specify a filename in Build goal name, you can still set the Library version field.

If the library doesn't have a version number (e.g., its filename is to be with no numeric suffix), select No. This way, the shared-object name isn't hard-coded in the library.

To use versioning, you can leave the field setting as Default, in which case the IDE uses 1 as the version number, or select an exact version number within the available range. The filename is then, where n is a number based on this setting. In this case, the shared-object name ends with so.n. The loader requires the library filename to be exactly like this because all dependent projects will refer to the library as so.n (in the NEEDED section of the executable).

If you use the IDE to upload libraries to the target when launching an application, the IDE silently renames each library file to the proper version, and makes a copy in the host directory so that the host tools (e.g., the debugger) can find it as well.

Other options
Specify any other command line options that aren't already covered on the Linker tab. For more information about the linker's options, see the entry for ld in the Utilities Reference.
Linker options
Shows the general linker options that you specified.

When a shared library is created, its name is documented in a special dynamic section, and when you link against this library, your application looks for that name.

When you run make install, the .so file is copied to .so.1, and a .so symbolic link is created to point to it. You'll notice that .so will get the right version. If you install a .so.2 (where the .so points to it), your old version 1 clients can still run.