Commit Graph

3443 Commits

Author SHA1 Message Date
Tobias Hunger
1a2f649b70 CMake: Clean out unnecessary data in server mode reader
Do not keep data around once it is used. It will not help on the next run,
especially not when the parsing fails then:-)

Change-Id: Ifa1259b74349ac172a5c9d5411c10d429085b853
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-14 09:03:44 +00:00
Tobias Hunger
ae46c06ac6 CMake: Show scanned header files in project tree (TeaLeafReader)
Change-Id: I06ed341a603f4062b41eabc91a90d6d8041aaa4b
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-14 09:03:37 +00:00
Tobias Hunger
269e699fd9 CMake: Pass scanned files on to builddirreaders
Change-Id: I226aeafe6800a84fe4bbf8cf6fd21b8237575a88
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-14 09:03:28 +00:00
Tobias Hunger
9252a3ae44 CMake: Add fileoverlay icons for cmake project files
Change-Id: Id9b8aa9b1902e6f88ca4e8bde2e5f20281a77437
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
2016-11-10 16:05:59 +00:00
Tobias Hunger
f33c6210cb CMake: Do not auto-run cmake if that was disabled
Do not run cmake on file changes if that was disabled in the CMakeTool.

Task-number: QTCREATORBUG-17232
Change-Id: I478161aebe353ddc47e24dd8a7f2cec54822e7d0
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-08 13:47:44 +00:00
Tobias Hunger
156282a97f CMake: Use QT_INSTALL_PREFIX for CMAKE_PREFIX_PATH
QQT_INSTALL_LIBS does not work as intended. That was not obvious since
Qt Creatod adapts the PATH, which had a similar effect, but breaks when
trying to build the project outside Qt Creator.

Change-Id: I36c7caf69a157ae0d4e3dc500265042fd5964681
Reviewed-by: Florian Apolloner <florian@apolloner.eu>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-08 12:08:36 +00:00
Tobias Hunger
9073a6419a CMake: Clear buildsystem related tasks before starting a new parser run
This prevents stale tasks from piling up in the issues pane.

Change-Id: I90f79e969b8929e5bb43e3964c01fcd10af2ea33
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-07 21:16:56 +00:00
Tobias Hunger
a7f237d17b CMake: Make future-handling in ServerModeReader more robust
Change-Id: Id2fc5487fdfb7619db2eee2439e5636afdc39add
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-07 13:25:39 +00:00
Tobias Hunger
c286d16c00 CMake: Scan cmake tree for files
CMake is pretty poor with the data on which files are contained in a project.
Run a filesystem scan of the project directory to find more files.

Change-Id: I9cc3293a9faf9a967efa5f586c144c3e7773588b
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-04 13:31:12 +00:00
Tobias Hunger
4c3885a584 CMake: Polish TeaLeafReader
Change-Id: If379e1d53f2da61dccb1e72ea1a516e3bd788b60
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-04 10:21:29 +00:00
Tobias Hunger
708cb1301f CMake: Do not warn about UNINITIALIZED variables
This so called type is not documented to exist but apparently widely used.

Change-Id: I0a7693e19874887a6e7260964d119d204e5be1ec
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-04 10:19:30 +00:00
Jarek Kobus
05747d7d33 Don't shout in text messages
Change-Id: Ie8d2c6761c87b358f0bc8691e529ba8144e267a4
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2016-11-04 09:51:29 +00:00
Tobias Hunger
ce3e586198 ProjectExplorer: Shorten space needed to store a FileType
Use class enum to shorten the FileType to quint16. This frees up a couple
of bytes per FileNode and we can have many of those.

Change-Id: I3a9ae25059690fefa15305a4268269647d6dc1c9
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-11-03 15:55:39 +00:00
Orgad Shaneh
410211e090 Merge remote-tracking branch 'origin/4.2'
Change-Id: Ibb932efece05a5f5613823fbc79c5b7601c73905
2016-11-02 16:52:58 +02:00
Tobias Hunger
db6b60874d CMake: Make connections in server-mode setup more robust
Change-Id: I1e66b4decd485edac9e3fb5508d5c0bb10d0554a
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-01 15:42:04 +00:00
Leena Miettinen
447a4a45b8 CMake: Fix UI text capitalization
"Generator" is written in lower case in the existing strings.

Change-Id: Ibef67f3f8c4a0aa5a0fa04f68e6b10fb2251d3ef
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-11-01 14:28:13 +00:00
Tobias Hunger
80a58ba1cb CMake: Fix pipe name on windows
Fix the name of the pipe used to talk to cmake-server on windows. The name needs
to follow a very specific pattern there.

Change-Id: I2789be43b374d008e2bf784563ab362efd891e59
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-11-01 12:29:34 +00:00
Eike Ziller
30f71eddf8 Merge remote-tracking branch 'origin/4.2'
Conflicts:
	qbs/modules/qtc/qtc.qbs
	qtcreator.pri

Change-Id: I245212bd45104636b1c9737b36d3db3e4af23092
2016-11-01 09:30:49 +01:00
Orgad Shaneh
b4e8dba26a CMakePM: Fix compilation with Qt 5.6
Change-Id: I9c1b924c29b6f1531322987ce77a577353aea300
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-01 06:17:36 +00:00
Nikolai Kosjar
6e6d5b5309 ClangStaticAnalyzer: Tests: Rely on projects telling when they finished parsing
We relied on the CppModelManager to tell us whether a project was reparsed
after a kit change. While this worked, it was not guaranteed that the project
is really finished (and ready for e.g. building) after pushing new ProjectInfos
to the CppModelManager.

Rely on the projects telling when they are finished with parsing. This is more
accurate and future-proof.

The introduced signals in Project and SessionManager are (at the moment)
only for tests.

Change-Id: I1b368ec4585ffa8755eb28fac6d187cce31243ee
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2016-10-31 15:09:01 +00:00
Tobias Hunger
ea44a2ce4e CMake: Force reparsing of cmake projects
Change-Id: I2f309e38e99a7b5836c623995e71470e7161ee98
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-10-31 13:03:51 +00:00
Tobias Hunger
6ad21cab82 CMake: Small updates to tea leaf reader
Change-Id: Ie68ed562415ee0024254729ea95591b59bb8f0cf
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-10-31 13:03:39 +00:00
Tobias Hunger
73dee5193c CMake: De-noise TeaLeafReader
Change-Id: I387bf0e1cc123d78591f95aacecb7be05c7455c2
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-10-31 13:03:34 +00:00
Tobias Hunger
36cfa32a86 CMake: Use ServerModeReader to retrieve data
Change-Id: I415dbf7ca79c909eea23ef3dc3a1d87438e9f261
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-10-31 13:03:27 +00:00
Tobias Hunger
c75210034c CMake: Implement a reader that interacts with CMake server mode
Implement a reader that interacts with CMake server mode to retrieve
its data.

Change-Id: I4146a648475c2c5811b8a08126f10ff3b99e79f5
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-10-31 13:03:21 +00:00
Tobias Hunger
e3c1e7ade3 CMake: Unify mapping of type strings to CMakeConfigItem::Type
Change-Id: I29b905aac8965039369891e6aad7e356fa1dad8f
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-10-31 13:03:08 +00:00
Tobias Hunger
4c1a7515c9 CMake: Implement helper to talk to CMake server-mode
Implement a helper class that can be used to talk to CMake's
server-mode.

Change-Id: I1df4af665991a5e0a3acb301ffd28008dd4fe86f
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-10-31 10:40:37 +00:00
Tobias Hunger
9a980adf3c CMake: Implement different backends to run cmake
Only the original one is implemented so far, but at least
in theory backends for retrieving data from cmake can now
be switched at runtime.

Change-Id: Id73a81c7d40f078be95defd30a38511dca3a3720
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2016-10-31 10:40:24 +00:00
Tobias Hunger
aa118539a4 CMake: Fix warnings about cmake configuration model
The index was handled wrongly.

Change-Id: I8a98c7a16e32798a9b7662c6c5c1683d248580da
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-10-27 15:01:53 +00:00
Eike Ziller
7480f58cf1 Merge remote-tracking branch 'origin/4.2'
Change-Id: Ied7c5b01ade2a71e92541fcced2935adcf143421
2016-10-24 13:17:28 +02:00
Øystein Walle
337ce07eaf CMake: forward-declare QDialog
Without this forward declaration compiling cmakekitinformation.cpp yields
a compilation error saying QDialog does not name a type.

Change-Id: I55066706e9850a947cac47e6e7150928c2fc6c51
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2016-10-20 10:30:03 +00:00
Alexander Drozdov
72d3f4383e CMake: handle CMake files saving only for active build configuration
...otherwise all previously selected build configurations begins to
process changes in CMakeLists.txt or other cmake-related files after
save it.

Change-Id: I86ff59022c85d88052ff434480e670ebddd90864
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-10-19 12:49:05 +00:00
Tobias Hunger
17977b3de7 CMake: Turn CMakeConfigItem into a CMake argument
Add a method to turn a CMakeConfigItem into a string suitable to be passed
to CMake.

Change-Id: Ia7834f1c2fad387dd6e6eaa3863f93385d48ca71
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-10-17 14:41:47 +00:00
Tobias Hunger
cc9090891c CMake: CMakeConfigItem uses macroexpander when turning into String
Make CMakeConfigItem use an (optional) macroexpander when asked to turn
a CMakeConfigItem into a string.

Change-Id: I7189fc4e5189d86809d002be3951934c37d98f12
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-10-17 14:41:43 +00:00
Tobias Hunger
1f1ee1ec2b CMake: Make configitem optionally use a macroexpander instead of a kit
Change-Id: I218979aff626630abd3b7113596ac5c731309432
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-10-17 14:34:57 +00:00
Tobias Hunger
4798d038a4 CMake: Clear files when cleaning CMakeBuildTargets
Change-Id: I16fefae569f807776e422b4b662d5b42d1230df2
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-10-17 13:48:52 +00:00
Tobias Hunger
93051ad76c CMake: Update button labels on dialog asking to import CMake changes
Change-Id: I5a4b0f192b30b7104ee7da160bcbf269f3f59bb3
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-10-17 12:40:03 +00:00
Tobias Hunger
9ff2bd16d3 CMake: Use Utils::FileName where appropriate
Change-Id: I3ab0a68920e27ebcf4e1dd58180a72ded58b892e
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-10-17 11:41:51 +00:00
Tobias Hunger
567db27e57 CMake: Cleanup CMakeCbpParser
Change-Id: I7fa193297e02ae8e3c5de88583f39409aeecf01f
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-10-17 11:30:47 +00:00
Tobias Hunger
b1433e2a05 CMake: Only pass the path mapper to the cbp-parser
No need to pass in the complete kit. Remove a couple of unnecessary
namespace names.

Change-Id: I2ac895535a80b4a54a423ce62dbdede65b67437b
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-10-17 11:02:26 +00:00
Tobias Hunger
fe23c71414 CMake: Slim down BuildDirManager's interface
* Make parse() private

Change-Id: I587f72296e4520ed62db06b7d46987907975eb2d
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-10-17 10:09:47 +00:00
Tobias Hunger
d9d752cf13 CMake: Clean up cmake project
Change-Id: Icfa2e1af8ff53c06954cb0b3b5b4b2ad974d6585
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-10-17 10:03:13 +00:00
Tobias Hunger
d3d5bc5900 CMake: Do not reset generator information
Do not reset generator information when the generator kit information
is already up to date.

Change-Id: I6bd9b94e8b83af2a58cc11ffcbfa11982374644a
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-10-12 09:58:44 +00:00
Tobias Hunger
628c4c5213 CMake: Do not continue watching files after a different BC got active
Change-Id: Ib044a168c2f4e8153cd89dac2a98a80cddb14513
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-10-12 09:58:38 +00:00
Alexander Drozdov
76b76f2723 CMakeProjectManager: Support drop down selector for options
CMake provides "hack" for cmake-gui, that allows set options variants
and select then from drop down list. Allows Qt Creator re-use this
solution.

See:
- https://blog.kitware.com/constraining-values-with-comboboxes-in-cmake-cmake-gui/
- http://blog.bethcodes.com/cmake-tips-tricks-drop-down-list

Drop down values can be added to option via:
 SET_PROPERTY(CACHE OptionName PROPERTY STRINGS Option1 Option2 Option3)

This solution should not restrict to provide any other value, it
provides only suggestion for user to select one of prdefined values.

Change-Id: I8fc52155775f1e04979db8206bb42363df9359e8
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-10-10 15:07:30 +00:00
Tobias Hunger
9e67dfbe17 CMake: Move more code into BuildDirManager
Continue to concentrate all the code reading random cmake files in
BuildDirManager. Now the task is to clean up the code, make it less
dependent on values it should not depend on (kits, etc.), make it
handle changes better and finally add another implementation that
uses the cmake server mode to extract the data.

Change-Id: I533625e376b969b64287bc205bd2e4be7a605306
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-10-10 14:45:51 +00:00
Tobias Hunger
b17c98ad6f CMake: Trigger cmake run *before* build when files changed
Make sure to run cmake *before* cmake --build when cmake files just
got saved. This helps e.g. when editing CMakeLists.txt files and the
hitting "Built" and "Save all" (or "Always save before build").

Task-number: QTCREATORBUG-16187
Change-Id: I16b1d02eb342a447003380946ce7a9d785476a0e
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-10-07 08:47:02 +00:00
Tobias Hunger
4d7420fe49 CMake: Fix warning
Change-Id: Ibfa8e5a9df03c9249f0feb6a8133dc222d57743d
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-10-07 08:36:26 +00:00
Tobias Hunger
683b965297 CMake: Encapsulate BuildDirManager in CMakeBC
This will make it easier to introduce a new type of BuildDirManager
to accommodate cmake server-mode.

Change-Id: I989aab9df44dff1cfdff226ef97bb30bb092ffdd
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-10-06 10:03:59 +00:00
Tobias Hunger
5481ca6edb CMake: Properly split QML_IMPORT_PATH
Change-Id: I0626da3a08e0e190757900a2df312ab0cee948d0
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-10-06 10:03:47 +00:00