PackageCPPLibraries - npackd/npackd GitHub Wiki
There are three types of C++/C packages:
- source code
- development libraries with .a and .obj files compiled to a particular platform with a particular compiler
- binary only with .dll files
Please use the suffix -src
for source code libraries.
Example: quazip-src
A development library in C++ should contain .h
files in the include
directory and .a
and .dll
files in the bin
directory. The development libraries should form a tree of dependencies with other development libraries.
The created binaries are compiler and platform dependent. Please use the -dev-<platform>-<compiler and its version>-<build options>
suffix for the name of the development library.
Please use the values from the following lists to create such suffixes (in this order):
Platforms:
- x86_64 - 64 bit binaries
- i686 - 32 bit binaries
Compilers:
- mingw32 - MinGW
- w64_dw2_posix - MinGW-w64, DW2, Posix threads
- w64_dw2_win - MinGW-w64, DW2, Windows threads
- w64_sjlj_posix - MinGW-w64, SJLJ, Posix threads
- w64_sjlj_win - MinGW-w64, SJLJ, Windows threads
- w64_seh_posix - MinGW-w64, SEH, Posix threads
- w64_seh_win - MinGW-w64, SEH, Windows threads
- vc - Visual Studio 98 (VC6)
- sdk - Windows SDK C++ compiler
Compiler versions examples:
- w64_4.9.2 - MinGW-w64 4.9.2
- vc_7 - Visual Studio 2002
- vc_7.1 - Visual Studio 2003
- vc_8 - Visual Studio 2005
- vc_9 - Visual Studio 2008
- vc_10- Visual Studio 2010
- vc_11- Visual Studio 2012
- vc_12- Visual Studio 2013
- sdk_7 - Windows SDK 7.0 C++ compiler
- sdk_7.1 - Windows SDK 7.1 C++ compiler
A build option should be specified in form _. For yes/no options the value should be omitted. The options should appear in alphabetical order. If the amount of options does not allow to put them all in the package name, consider describing the list of options in the package description and create a new option name that would combine other options.
Example: qt-dev-i686-w64_4.9.2-opengl_desktop-opensource-qt_freetype-qt_sql_sqlite-release-static-style_windows
Standard names for compiler specific options:
- Visual C++ specific: "mt" - causes your application to use the multi-threaded and DLL-specific version of the run-time library
- Visual C++ specific: "md" - causes your application to use the multi-threaded, static version of the run-time library
- Visual C++ specific: see http://msdn.microsoft.com/en-us/library/2kzt1wy3(v=vs.110).aspx
Different set of compiler or linker options:
- release - release build (default, can be omitted)
- debug - debug build
Static or dynamic library loading:
- static - static build
- dynamic - dynamic loading libraries (default, can be omitted)
Example: qt-dev-i686-w64-debug-static
The library should have the standard name expected by the compiler.
Example for MinGW (prefix "lib" and extension ".a"): "lib\libz.a"
The packages with binaries (only .dll files, no .o or .lib) should be named simply as the library. It is also possible to use the simple suffix 64
for 64-bit binaries as in program packages.
Example: qt-i686-debug Example 2: qt64