diff options
author | Sebastian Holtermann <sebholt@xwmw.org> | 2019-09-20 22:39:13 +0200 |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2019-09-25 10:07:09 -0400 |
commit | d867e058924d348ee5ec5bba867965e8f1f276e2 (patch) | |
tree | 630f67b2bcce99327a769ef591b1f1698cf76742 /Source/cmQtAutoGen.cxx | |
parent | 881e3cfbf96c7b4f48304d3dfc07899c2e6703de (diff) | |
download | cmake-d867e058924d348ee5ec5bba867965e8f1f276e2.tar.gz |
Autogen: Use JSON instead of CMake script for info files
We used to store information for the _autogen target in a CMake script
file AutogenInfo.cmake, which was imported by a temporary cmake instance in
the _autogen target. This introduced the overhead of creating a temporary
cmake instance and inherited the limitations of the CMake language which
only supports lists.
This patch introduces JSON files to pass information to AUTORCC and
autogen_ targets. JSON files are more flexible for passing data, e.g. they
support nested lists.
The patch has the side effects that
- AutogenInfo.cmake is renamed to AutogenInfo.json
- AutogenOldSettings.txt is renamed to AutogenUsed.txt
- RCC<qrcBaseName><checksum>Info.cmake is renamed to
AutoRcc_<qrcBaseName>_<checksum>_Info.json
- RCC<qrcBaseName><checksum>.lock is renamed to
AutoRcc_<qrcBaseName>_<checksum>_Lock.lock
- RCC<qrcBaseName><checksum>Settings.txt is renamed to
AutoRcc_<qrcBaseName>_<checksum>_Used.txt
Diffstat (limited to 'Source/cmQtAutoGen.cxx')
-rw-r--r-- | Source/cmQtAutoGen.cxx | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/Source/cmQtAutoGen.cxx b/Source/cmQtAutoGen.cxx index 57c88259e1..0f0e86469d 100644 --- a/Source/cmQtAutoGen.cxx +++ b/Source/cmQtAutoGen.cxx @@ -72,7 +72,6 @@ void MergeOptions(std::vector<std::string>& baseOpts, // - Class definitions unsigned int const cmQtAutoGen::ParallelMax = 64; -std::string const cmQtAutoGen::ListSep = "<<<S>>>"; cm::string_view cmQtAutoGen::GeneratorName(GenT genType) { @@ -162,6 +161,16 @@ std::string cmQtAutoGen::QuotedCommand(std::vector<std::string> const& command) return res; } +std::string cmQtAutoGen::FileNameWithoutLastExtension(cm::string_view filename) +{ + auto slashPos = filename.rfind('/'); + if (slashPos != cm::string_view::npos) { + filename.remove_prefix(slashPos + 1); + } + auto dotPos = filename.rfind('.'); + return std::string(filename.substr(0, dotPos)); +} + std::string cmQtAutoGen::ParentDir(cm::string_view filename) { auto slashPos = filename.rfind('/'); |