Commit Graph

434 Commits

Author SHA1 Message Date
Brad King
5f782119c8 cmake-gui: Restore workaround for crash in file dialog
In commit ce9dbceb42 (QtDialog: remove Qt4-only code, 2020-06-02,
v3.19.0-rc1~712^2~1) we removed an event filter that was thought to be
necessary only as a workaround for a bug in Qt.  However, that bug was
fixed in Qt 4.5, and the file dialog still crashes as of Qt 5.14 without
the filter.  Restore the workaround pending further investigation.

Fixes: #21400
2020-11-05 14:50:45 -05:00
Brad King
199247c21a Merge topic 'cmake-presets-help-flag' into release-3.19
c619be2784 ccmake: Don't list --preset in --help

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5428
2020-10-28 07:47:37 -04:00
Kyle Edwards
ef03124237 CMake GUI: Add --browse-manual argument 2020-10-27 12:05:41 -04:00
Kyle Edwards
c619be2784 ccmake: Don't list --preset in --help
And show available options in cmake-gui.

Fixes: #21313
2020-10-27 10:29:24 -04:00
Kyle Edwards
b7d7eca66d CMakePresets.json: Rework how --preset argument is handled
If a path argument with no -S or -B leads to a cache directory,
use that directory as the binary directory. Otherwise, use the
binary directory from the preset.

Fixes: #21311
2020-10-26 22:32:45 +11:00
Kyle Edwards
64afabdbcb CMakePresets.json: Split cmakeGeneratorConfig field
Make this field separate for both architecture and toolset. Allow
architecture and toolset to be either strings or objects with value
and strategy fields.

Fixes: #21317
2020-10-22 11:24:39 -04:00
Kyle Edwards
638557cbfe CMakePresets.json: Properly report macro expansion errors
Make a distinction between strings which simply use the
$vendor{<...>} macro, which is valid but makes it unusable by CMake,
and strings which actually contain invalid macro expansions.

Fixes: #21308
2020-10-21 09:20:52 -04:00
Kyle Edwards
d471406f0b CMake GUI: Disable preset fields instead of hiding them 2020-10-16 15:16:04 -04:00
Brad King
440ee739c4 cmake-gui: Attach icons only to main GUI executables
In commit efe48189bf (cmake-gui: Restore application icon on macOS,
2020-10-13, v3.19.0-rc1~2^2) and commit f7ae4f572b (cmake-gui: Restore
application icon on Windows, 2020-10-13, v3.19.0-rc1~1^2) we attached
the icon source files to all consumers of `CMakeGUILib`, but that
includes other libraries like `CMakeGUIMainLib`.  The latter library is
meant only for direct consumption by a GUI executable, so use that to
propagate the icons instead.
2020-10-14 09:35:58 -04:00
Brad King
f7ae4f572b cmake-gui: Restore application icon on Windows
In commit 41e223deb3 (CMake GUI: Split up into libraries, add test shim,
2020-09-14) the Windows resource source file that references the icon
was moved to CMakeGUILib, but it needs to be directly in the main
application in order to be attached properly.
2020-10-13 12:09:28 -04:00
Brad King
efe48189bf cmake-gui: Restore application icon on macOS
In commit 41e223deb3 (CMake GUI: Split up into libraries, add test shim,
2020-09-14) the macOS icon source file was moved to CMakeGUILib, but it
needs to be directly in the main application in order to be attached to
the `.app` in the right place.
2020-10-13 10:35:14 -04:00
Kyle Edwards
a4382f72d7 CMake GUI: Add presets functionality 2020-10-05 09:49:59 -04:00
Kyle Edwards
0fe2ee3d43 CMake GUI: Add "CMake Reference Manual" help item
And switch the ordering of "Help" and "About".
2020-09-30 16:17:31 -04:00
Kyle Edwards
85f5009d27 CMake GUI: Add environment editor 2020-09-28 09:46:35 -04:00
Kyle Edwards
ab8f6fdd8c CMake GUI: Modernize signal-slot connections
Qt5 supports passing function pointers to QObject::connect(), and
prefers this over SIGNAL() and SLOT(). Modernize the connections,
stop using a deprecated signal from QComboBox, and modernize a few
QKeySequence's.
2020-09-27 12:06:54 -04:00
Kyle Edwards
41e223deb3 CMake GUI: Split up into libraries, add test shim 2020-09-23 14:10:40 -04:00
Kyle Edwards
b7995b62f0 QCMakeCacheView: Default to nullptr for parent 2020-09-23 14:10:40 -04:00
Kitware Robot
bdca8b01d2 Modernize: Use #pragma once in all header files
#pragma once is a widely supported compiler pragma, even though it is
not part of the C++ standard. Many of the issues keeping #pragma once
from being standardized (distributed filesystems, build farms, hard
links, etc.) do not apply to CMake - it is easy to build CMake on a
single machine. CMake also does not install any header files which can
be consumed by other projects (though cmCPluginAPI.h has been
deliberately omitted from this conversion in case anyone is still using
it.) Finally, #pragma once has been required to build CMake since at
least August 2017 (7f29bbe6 enabled server mode unconditionally, which
had been using #pragma once since September 2016 (b13d3e0d)). The fact
that we now require C++11 filters out old compilers, and it is unlikely
that there is a compiler which supports C++11 but does not support
#pragma once.
2020-09-03 09:30:21 -04:00
Brad King
f3d93edb36 Merge topic 'cmake-gui-qt-5.14'
af6cf586f6 cmake-gui: Fix crash when built with Qt 5.14 or later

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5045
2020-07-23 08:20:48 -04:00
Brad King
af6cf586f6 cmake-gui: Fix crash when built with Qt 5.14 or later
In commit d7679f6427 (QCMakeCacheView: use non-deprecated List and Set
constructions, 2020-06-10, v3.18.0-rc2~13^2) the conversion of the
`this->properties()` value to QSet is incorrect for Qt 5.14+.  The
problem is that `this->properties()` returns by value, so the range
`this->properties().begin(), this->properties().end()` provides
iterators to two different instances.  Use an intermediate temporary
copy of the value to get a consistent iterator range.

Fixes: #20981
2020-07-22 15:19:51 -04:00
Brad King
6bdbc7dba0 Merge topic 'cmake-gui-qt-5.14'
8eb7cf9b5f cmake-gui: Fix compilation as C++14 with Qt 5.14

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Ben Boeckel <ben.boeckel@kitware.com>
Merge-request: !4978
2020-07-07 09:17:23 -04:00
Brad King
8eb7cf9b5f cmake-gui: Fix compilation as C++14 with Qt 5.14
Fix code added by commit d7679f6427 (QCMakeCacheView: use non-deprecated
List and Set constructions, 2020-06-10, v3.18.0-rc2~13^2), used
conditionally on Qt 5.14 or above, to compile as C++14.
2020-07-06 11:45:03 -04:00
Brad King
df6b077625 cmake: Remove broken '--warn-unused-vars' option
This option has been broken since commit b9f9915516 (cmMakefile: Remove
VarUsageStack., 2015-05-17, v3.3.0-rc1~52^2).  That commit removed the
check that an initialized variable has actually been used and caused the
option to warn on every variable ever set.  This was not caught by the
test suite because the test for the feature only checked that warnings
appear when needed and not that they do not appear when not needed.

The option was never very practical to use.  Remove it to avoid the
runtime cost of usage tracking and checks for every variable (which we
were doing even when the option was not used).
2020-06-29 17:23:27 -04:00
Ben Boeckel
0fc1818831 QCMakeWidgets: replace QDirModel 2020-06-15 07:13:23 -04:00
Ben Boeckel
736fb34294 QCMake: use loadRelaxed if available
Added in 5.14 and load() was deprecated at the same time.
2020-06-15 07:12:49 -04:00
Brad King
068551cfb2 Merge topic 'cmake-gui-qt5-only'
4037beb747 QtDialog: remove Qt4 definition
ce9dbceb42 QtDialog: remove Qt4-only code
8ea50749da QtDialog: use Qt5's imported targets
4ccc9921be QtDialog: use qt5 functions for special Qt sources
e4d6015460 QtDialog: remove Qt4 support

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4836
2020-06-12 10:11:54 -04:00
Ben Boeckel
d7679f6427 QCMakeCacheView: use non-deprecated List and Set constructions 2020-06-10 16:42:56 -04:00
Ben Boeckel
4037beb747 QtDialog: remove Qt4 definition 2020-06-09 10:31:00 -04:00
Ben Boeckel
ce9dbceb42 QtDialog: remove Qt4-only code
The `reset()` method was actually deprecated for 5.0 which means it can
now be removed here.
2020-06-09 10:30:46 -04:00
Ben Boeckel
8ea50749da QtDialog: use Qt5's imported targets 2020-06-05 11:55:56 -04:00
Ben Boeckel
4ccc9921be QtDialog: use qt5 functions for special Qt sources
Automoc is not supported in bootstrap builds, so it cannot be used
unconditionally.
2020-06-05 11:54:48 -04:00
Ben Boeckel
e4d6015460 QtDialog: remove Qt4 support 2020-06-05 08:46:40 -04:00
Ben Boeckel
ed2fe558b0 CursesDialog: resolve clang-tidy warnings
Fixes:

  - unnecessary bool expression (cmCursesMainForm)
  - removes a duplicate if/else branch (RegexExplorer)
  - collapses redundant if/else branch logic (CMakeSetupDialog and
    cmCursesStringWidget)
2020-06-02 07:37:56 -04:00
Ben Boeckel
44f1744bed QtDialog: avoid using deprecated APIs 2020-06-02 07:37:56 -04:00
Jiri Malak
7a0c17f704 cmake-gui: Do not pass CMAKE_{C,CXX}_COMPILER items to cmake if empty
If C or C++ compiler is not specified in the initial dialog, do not pass
`CMAKE_C_COMPILER` or `CMAKE_CXX_COMPILER` cache entries for
cross-compilation setup.  Instead allow the normal search for the
compiler to proceed.
2020-04-27 11:12:25 -04:00
Jiri Malak
11cbf79d15 cmake-gui: Pass CMAKE_SYSTEM_PROCESSOR to from gui to cmake
Add missing `CMAKE_SYSTEM_PROCESSOR` cmake cache entry to passed options
for first configure.  We already pass `CMAKE_SYSTEM_{NAME,VERSION}`.
2020-04-13 11:17:10 -04:00
Brad King
7e3d81b1df Merge topic 'cmprop-state'
a7f2ff16a4 cmState::GetCacheEntryProperty: return cmProp

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4522
2020-03-27 07:49:30 -04:00
Vitaly Stakhovsky
a7f2ff16a4 cmState::GetCacheEntryProperty: return cmProp 2020-03-25 14:46:52 -04:00
Brad King
12b39aef75 Remove redundant calls to CollapseFullPath
Remove calls where it is known the input is already a collapsed
full path.
2020-03-24 10:10:06 -04:00
Brad King
a4abf61520 Merge topic 'cmake-gui-open-check'
ecc0086bfc cmake-gui: Fix use-after-free in Open-possible check

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4508
2020-03-23 09:27:44 -04:00
Francisco Facioni
ecc0086bfc cmake-gui: Fix use-after-free in Open-possible check
Fix `QCMake::checkOpenPossible` to copy `toLocal8Bit().data()` before
its lifetime expires.
2020-03-20 08:38:31 -04:00
Vitaly Stakhovsky
bd89133543 cmState::GetCacheEntryValue: return cmProp 2020-03-17 12:09:20 -04:00
Marc Chevrier
9de0355d4f Modernize memory management
Update internals of various classes.
2020-03-05 07:34:01 -05:00
Code Smith
9a71fa46e7 cmake-gui: set generator field defaults from environment
Fixes: #20251
2020-02-06 11:59:08 -05:00
Marc Chevrier
a00960288b GlobalGenerator family: modernize memory management 2020-01-07 11:03:11 +01:00
Brad King
b7509dd674 Add option to configure Ninja link job pool for CMake's own binaries
Create an undocumented `CMake_JOB_POOL_LINK_BIN` option that builders
can set to avoid linking too many of our binaries at once.
2019-10-10 13:28:45 -04:00
Kitware Robot
ed98209ddc Revise include order using clang-format-6.0
Run the `clang-format.bash` script to update our C and C++ code to a new
include order `.clang-format`.  Use `clang-format` version 6.0.
2019-10-01 12:26:36 -04:00
Corentin Plouet
ab06de68c5 Help: fixed typos in PCH / Unity Build doc
+ typos in source code
2019-10-01 05:33:50 +10:00
Regina Pfeifer
f30523d090 clang-tidy: modernize-deprecated-headers 2019-09-16 10:11:13 -04:00
Regina Pfeifer
d25a5a7ec9 clang-tidy: modernize-use-auto
Set the MinTypeNameLength option to an impossibly high value in order
to limit the diagnostics to iterators.  Leave new expressions and cast
expressions for later.
2019-09-10 22:21:41 +02:00