The functionality was duplicated between the Qt4 and CMake build
configurations and their configuration widgets. This change moves it
down to BuildConfiguration, in addition also making it available for the
Generic Project.
Also provides an upgrade path for the configuration.
Task-number: QTCREATOR-24
Reviewed-by: dt
Reviewed-by: Tobias Hunger
Environment variables will now be expanded in the Generic Project file
and include path lists. They have to be written like $$(VARIABLE), like
in qmake .pro files.
Task-number: QTCREATORBUG-366
Don't mess up the original structure of the generic project file list by
reconverting all the paths to be relative from the project directory.
This allows whitespace or absolute paths to be preserved even when
adding/removing files through Qt Creator.
* Ease cross device development by introducing 'targets' which
group build- and runsettings that are valid for this one target
Most of the kudos for the code review go to dt. Con, thorbjorn,
ckandler and others did also review parts of this patch.
Reviewed-by: dt
* Use id() for methods returning a string used to represent
some type of object.
* Use displayName() for strings that are meant to be user
visible.
* Quieten some warnings while touching the files anyway.
* Move Factories to their products in the plugins where that
was not done before.
Reviewed-by: dt
* Rework IBuildParser:
* Remove name() method.
* Remove enterDirectory and leaveDirectory signals.
* Allow chaining of parsers.
* Rename IBuildParser to IOutputParser.
* Implement GnuMakeParser.
* Remove entering/leaving directory related code from all other parsers
* Move filename fixup heuristic based on entering/leaving directory
massages from gnumake here from AbstractMakeStep.
* Add outputParser method to ToolChain: This removes the need to map
toolchains to BuildParser names in the BuildSteps.
* Enhance AbstractProcessStep to accept a IOutputParser to parse its output.
* Remove AbstractMakeStep.
* Set the appropriate Parsers in all classes deriving from AbstractProcessStep
and append the ToolChain's parser to the parser chain.
* Remove BuildParserFactories: There is no more need for them.
* Remove constants used to identify the BuildParsers.
* Clean up some names:
* Replace stdOut with stdOutput.
* Replace addToTaskWindow with addTask and addToOutputWindow with
addOutput. Do this wherever it is not yet clear that this will end up
in the Task/Output window.
Reviewed-by: dt
The project() should in most cases not matter, instead the
BuildConfiguration should. This shows all the information that needs to
move into the BuildConfiguration classes.
Enables users to change which buildsteps get run per buildconfiguration.
Some further tweaks are probably necessary. This is a rather big
change, though it should work. :)
That is we actually parse the mkspec and evaluate QMAKE_CXX (and a few
other variables) to figure out the correct mkspec. This makes using
custom mkspecs easier and is also cleaner. I also changed mkspec() and
mkspecPath() to behave a little diffrent, essentialy mkspec() will
return only the name (the actual dir name) of the mkspec. That is in
general not sufficient for passing on to qmake. mkspecPath() only
returns the correct path to mkspecs/default.
Hopefully I haven't broken WinCE/Maemo/MinGW.
This has still a few missing things, but this enough to start getting
some feedback. Missing are non qt projects, a solution for the
runconfiguration, a missing black line between the treeview on top and
the project settings at the bottom. Some flickering with removing/adding
widgets to the QScrollArea and not showing the expanded widget if the
Details button is right at the bottom.
E.g. cmake pops up a wizard then, the running of cmake can fail though.
Now you don't end i[ with a empty project then. The error reporting in
that case is not yet optimal.
Converting to a QSet and back randomizes the order of the files. Just
doing a linear scan and a QSet for speading up the contains() check
should be enough and maintains the order.
When there was no final newline in the .files file, the name of the
first new file would get appended to the name of the last file. This
patch fixes that by simply rewriting the whole file.
Also switched to writing out native line endings.
We forgot to convert them to absolute. Also removed two calls to
removeDuplicates, since the convertToAbsoluteFiles already does that.
Reviewed-by: Roberto Raggi