blob: e026a0e591edadf3e9732ae3ffa09036d5192030 [file] [log] [blame]
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/
/*!
\page third-party-libraries.html
\title Third Party Libraries
\brief A guide to using third party libraries with Qt
Using a third-party library with Qt is a simple process. Suppose you know
of a cross-platform library that accepts audio samples of a cat's meows and
translates them into English words. This library is named \c CatWhisperer,
and has several files that it provides as part of its library.
Your project, \c MyQtApp, stores these files in a folder named \c 3rdparty:
\list
\li MyQtApp/
\list
\li MyQtApp.pro
\li src/
\list
\li main.cpp
\endlist
\li 3rdparty/
\list
\li CatWhisperer
\list
\li include/
\list
\li CatWhisperer.h
\endlist
\li lib/
\list
\li libCatWhisperer.so
\li CatWhisperer.lib
\endlist
\li bin/
\list
\li CatWhisperer.dll
\endlist
\endlist
\endlist
\endlist
\endlist
To use the \c CatWhisperer library in \c MyQtApp, \c qmake requires the
location and names of the \c CatWhisperer libraries.
Optionally, you can also:
\list
\li Provide the location of the \c CatWhisperer source code so that you
don't have to type out the full path to each file when you include them
in your own code.
\li Choose the destination in which the \c MyQtApp executable will be
created.
\endlist
The information above is provided in the \c .pro file, so that \c qmake can
parse it and produce makefiles. Makefiles contain all the information
needed by your compiler and linker to produce output, whether it is an
executable, another library file, etc. The next sections explain the syntax
with which \c qmake expects you to provide this information.
\section1 Source Code
To be able to write
\code
#include <CatWhisperer.h>
\endcode
instead of
\code
#include <3rdparty/CatWhisperer/include/CatWhisperer.h>
\endcode
you can provide the path to the \c CatWhisperer \c include directory,
using the \l{qmake Variable Reference#INCLUDEPATH}{INCLUDEPATH} variable:
\code
INCLUDEPATH += 3rdparty/CatWhisperer/include
\endcode
\section1 Library Files
To let \c qmake know where to find the \c CatWhisperer library files,
use the \l{qmake Variable Reference#LIBS}{LIBS} variable:
\code
LIBS += -L"3rdparty/CatWhisperer/lib" -lCatWhisperer
\endcode
The first part of the expression lets the linker know in which directory
it should look for the library files. The double quotes are only necessary
when the path contains spaces, so we could have omitted them in this
example.
The second part tells the linker which libraries to link against. We have
two different library files for UNIX platforms and Windows, respectively:
\c libCatWhisperer.so and \c CatWhisperer.lib. It is not necessary
to specify the \c .lib extension, nor the \c lib prefix
(on UNIX platforms).
\section1 Destination Directory
By default, \c qmake creates the executable in the same directory as the
\c .pro file. We can choose our own directory using the
\l{qmake Variable Reference#DESTDIR}{DESTDIR} variable:
\code
DESTDIR = bin
\endcode
That's it! You can now use the \c CatWhisperer library in your project.
The final \c .pro file looks like this:
\code
TARGET = MyQtApp
TEMPLATE = app
INCLUDEPATH += 3rdparty/CatWhisperer/include
SOURCES += src/main.cpp
LIBS += -L"3rdparty/CatWhisperer/lib" -lCatWhisperer
\endcode
\sa {qmake Manual}, {Qt Creator: Adding Libraries to Projects}
*/