forked from qt-creator/qt-creator
There have been several requests on the mailing list or the bug tracker to support parsing warnings for alien compilers (sometimes slightly modified GCC). Instead of natively supporting every compiler, users of less frequently used compilers should use the custom parser to parse errors and warnings. The output channel filter for error and warning parser allows to scan standard output, standard error or both channels. Also added tests for twisted capture positions. Task-number: QTCREATORBUG-11003 Change-Id: I5a5bd6f88cf21cde1c74962225067d4543693678 Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
219 lines
8.7 KiB
Plaintext
219 lines
8.7 KiB
Plaintext
/****************************************************************************
|
|
**
|
|
** Copyright (C) 2015 The Qt Company Ltd.
|
|
** Contact: http://www.qt.io/licensing
|
|
**
|
|
** This file is part of Qt Creator
|
|
**
|
|
**
|
|
** GNU Free Documentation License
|
|
**
|
|
** 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.
|
|
**
|
|
**
|
|
****************************************************************************/
|
|
|
|
// **********************************************************************
|
|
// NOTE: the sections are not ordered by their logical order to avoid
|
|
// reshuffling the file each time the index order changes (i.e., often).
|
|
// Run the fixnavi.pl script to adjust the links to the index order.
|
|
// **********************************************************************
|
|
|
|
/*!
|
|
\contentspage {Qt Creator Manual}
|
|
\previouspage creator-project-qmake.html
|
|
\page creator-tool-chains.html
|
|
\nextpage creator-debuggers.html
|
|
|
|
\title Adding Compilers
|
|
|
|
Qt is supported on a variety of 32-bit and 64-bit platforms, and can
|
|
usually be built on each platform with GCC, a vendor-supplied compiler, or
|
|
a third party compiler. In \QC, a \l{glossary-buildandrun-kit}{kit}
|
|
specifies the compiler and other necessary tools for building and running an
|
|
application on a particular platform.
|
|
|
|
\QC automatically detects the compilers that are registered by your system
|
|
or by an installer. You can add compilers to build applications by using other
|
|
compilers or by using additional versions of the automatically detected
|
|
compilers:
|
|
|
|
\list
|
|
|
|
\li GNU Compiler Collection (GCC) is a compiler for Linux and
|
|
OS X.
|
|
|
|
\li MinGW (Minimalist GNU for Windows) is a native software port of GCC
|
|
and GNU Binutils for use in the development of native Microsoft
|
|
Windows applications on Windows. MinGW is
|
|
distributed together with \QC and Qt installers for Windows.
|
|
|
|
\li Linux ICC (Intel C++ Compiler) is a group of C and C++ compilers
|
|
for Linux.
|
|
|
|
\li Clang is a C, C++, Objective C, and Objective C++ front-end for the
|
|
LLVM compiler for Windows, Linux, and OS X.
|
|
|
|
\li QCC is the interface for compiling C++ applications for QNX.
|
|
|
|
\endlist
|
|
|
|
To build an application using GCC, MinGW, Clang, or QCC, specify the path
|
|
to the directory where the compiler is located and select
|
|
the application binary interface (ABI) version from the list of available
|
|
versions. You can also create a custom ABI definition.
|
|
For QCC, also specify the path to the QNX Software Development Platform (SDP).
|
|
|
|
You specify the compiler to use for each kit in \uicontrol Tools >
|
|
\uicontrol Options > \uicontrol {Build & Run} > \uicontrol Kits.
|
|
|
|
To add compilers:
|
|
|
|
\list 1
|
|
|
|
\li Select \uicontrol Tools > \uicontrol Options >
|
|
\uicontrol {Build & Run} > \uicontrol Compilers > \uicontrol Add
|
|
and select a compiler in the list.
|
|
|
|
\image qtcreator-toolchains.png
|
|
|
|
To clone the selected compiler, select \uicontrol Clone.
|
|
|
|
\li In the \uicontrol Name field, enter a name for the compiler to
|
|
identify it in \QC.
|
|
|
|
\li In the \uicontrol {Compiler path} field, enter the path to the
|
|
directory where the compiler is located.
|
|
|
|
\li In the \uicontrol {Platform codegen flags} field, check the flags passed
|
|
to the compiler that specify the architecture on the target
|
|
platform.
|
|
|
|
\li In the \uicontrol {Platform linker flags} field, check the flags passed to
|
|
the linker that specify the architecture on the target platform.
|
|
The linker flags are used only when building with Qbs.
|
|
|
|
The other settings to specify depend on the compiler.
|
|
|
|
\li In the \uicontrol ABI field, provide an identification for the
|
|
target architecture. This is used to warn about ABI mismatches
|
|
within the kits.
|
|
|
|
\endlist
|
|
|
|
\section1 Adding Custom Compilers
|
|
|
|
To add a compiler that is not listed above or a remote compiler, use the
|
|
\uicontrol Custom option and specify the paths to the directories where the
|
|
compiler and make tool are located and options for the compiler.
|
|
|
|
\image creator-compilers-custom.png
|
|
|
|
To add other compilers:
|
|
|
|
\list 1
|
|
|
|
\li Select \uicontrol Tools > \uicontrol Options > \uicontrol {Build & Run} >
|
|
\uicontrol Compilers > \uicontrol Add > \uicontrol Custom.
|
|
|
|
\li In the \uicontrol Name field, enter a name for the compiler.
|
|
|
|
\li In the \uicontrol {Compiler path} field, enter the path to the directory
|
|
where the compiler is located.
|
|
|
|
\li In the \uicontrol {Make path} field, enter the path to the directory where
|
|
the make tool is located.
|
|
|
|
\li In the \uicontrol ABI field, specify the ABI version.
|
|
|
|
\li In the \uicontrol {Predefined macros} field, specify the macros that the
|
|
compiler enables by default. Specify each macro on a separate line,
|
|
in the following format: MACRO[=value].
|
|
|
|
\li In the \uicontrol {Header paths} field, specify the paths to directories
|
|
that the compiler checks for headers. Specify each path on a
|
|
separate line.
|
|
|
|
\li In the \uicontrol {C++11 flags} field, specify the flags that turn on
|
|
C++11 support in the compiler.
|
|
|
|
\li In the \uicontrol {Qt mkspecs} field, specify the path to the directory
|
|
where mkspecs are located. Usually, the path is specified relative
|
|
to the Qt mkspecs directory.
|
|
|
|
\li In the \uicontrol {Error parser} field, select the error parser to use.
|
|
Select \uicontrol Custom, and then select \uicontrol {Customer Parser Settings}
|
|
to specify settings for a custom parser:
|
|
|
|
\image qtcreator-custom-parser.png
|
|
|
|
The custom error parser enables you to capture errors and warnings separately.
|
|
You can configure the error parser in the \uicontrol Error tab and the warning
|
|
parser in the \uicontrol Warning tab:
|
|
|
|
\list 1
|
|
|
|
\li In the \uicontrol {Error message capture pattern} field, specify
|
|
a regular expression to define what is an error. The custom
|
|
parser matches the compile output line by line against the
|
|
regular expression and displays errors in the \uicontrol Issues
|
|
output pane. Create regular expression groups that contain
|
|
the file name, line number and error message.
|
|
|
|
\li In the \uicontrol {Capture Positions} field, map the regular
|
|
expression groups to \uicontrol {File name}, \uicontrol {Line number},
|
|
and \uicontrol Message.
|
|
|
|
\li In the \uicontrol {Capture Output Channels} field, specify whether
|
|
messages from standard output, standard error, or both channels
|
|
should be captured.
|
|
|
|
\li In the \uicontrol {Test} group, you can test how the message that
|
|
you enter in the \uicontrol {Error message} field is matched when
|
|
using the current settings.
|
|
|
|
\endlist
|
|
|
|
\endlist
|
|
|
|
\section1 Troubleshooting MinGW Compilation Errors
|
|
|
|
If error messages displayed in the \uicontrol {Compile Output} pane contain
|
|
paths where slashes are missing (for example, \c {C:QtSDK}),
|
|
check your PATH variable. At the command line, enter the following commands:
|
|
|
|
\code
|
|
where sh.exe
|
|
where make.exe
|
|
where mingw32-make.exe
|
|
\endcode
|
|
|
|
If these commands show paths, they have been added to the global PATH
|
|
variable during the installation of a tool chain based on Cygwin or MinGW,
|
|
even though this is against Windows conventions.
|
|
|
|
To keep working with the third-party tool chain, create a new shell link
|
|
that adds the required paths (as Visual Studio and Qt do). The shell link
|
|
must point to cmd.exe, as illustrated by the following example:
|
|
|
|
\c {C:\Windows\System32\cmd.exe /K C:\path_to\myenv.bat}
|
|
|
|
where the /K parameter carries out the command specified in the bat file.
|
|
|
|
Create the myenv.bat file at \e path_to, which should be in a convenient
|
|
location. In the file, specify the paths to the tool chains. For example,
|
|
|
|
\c {set PATH=C:\path1;C:\path2;%PATH%}
|
|
|
|
where \e path1 and \e path2 are paths to the tool chains.
|
|
|
|
Finally, remove the paths from the global PATH, reboot the computer, and
|
|
run the \c where commands again to verify that the global PATH is now clean.
|
|
|
|
You can use the shell link to run the tools in the third-party tool chains.
|
|
|
|
*/
|