Merge topic 'cmake-gui-reference-manual'

0fe2ee3d43 CMake GUI: Add "CMake Reference Manual" help item
391ff1ec51 Refactor: Modernize cmSystemTools::FindCMakeResources()

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5302
This commit is contained in:
Brad King
2020-10-01 12:17:05 +00:00
committed by Kitware Robot
4 changed files with 40 additions and 8 deletions

View File

@@ -181,11 +181,25 @@ CMakeSetupDialog::CMakeSetupDialog()
&QCMakeCacheView::collapseAll);
QMenu* HelpMenu = this->menuBar()->addMenu(tr("&Help"));
a = HelpMenu->addAction(tr("About"));
QObject::connect(a, &QAction::triggered, this, &CMakeSetupDialog::doAbout);
a = HelpMenu->addAction(tr("Help"));
QObject::connect(a, &QAction::triggered, this, &CMakeSetupDialog::doHelp);
a->setShortcut(QKeySequence::HelpContents);
a = HelpMenu->addAction(tr("CMake Reference Manual"));
QObject::connect(a, &QAction::triggered, this, []() {
QString urlFormat("https://cmake.org/cmake/help/v%1.%2/");
QUrl url(urlFormat.arg(QString::number(cmVersion::GetMajorVersion()),
QString::number(cmVersion::GetMinorVersion())));
if (!cmSystemTools::GetHTMLDoc().empty()) {
url = QUrl::fromLocalFile(
QDir(QString::fromLocal8Bit(cmSystemTools::GetHTMLDoc().data()))
.filePath("index.html"));
}
QDesktopServices::openUrl(url);
});
a = HelpMenu->addAction(tr("About"));
QObject::connect(a, &QAction::triggered, this, &CMakeSetupDialog::doAbout);
this->setAcceptDrops(true);

View File

@@ -21,6 +21,7 @@
#define CMake_DEFAULT_RECURSION_LIMIT @CMake_DEFAULT_RECURSION_LIMIT@
#define CMAKE_BIN_DIR "/@CMAKE_BIN_DIR@"
#define CMAKE_DATA_DIR "/@CMAKE_DATA_DIR@"
#define CMAKE_DOC_DIR "/@CMAKE_DOC_DIR@"
#define CM_FALLTHROUGH cmsys_FALLTHROUGH

View File

@@ -2077,6 +2077,7 @@ static std::string cmSystemToolsCMakeCursesCommand;
static std::string cmSystemToolsCMakeGUICommand;
static std::string cmSystemToolsCMClDepsCommand;
static std::string cmSystemToolsCMakeRoot;
static std::string cmSystemToolsHTMLDoc;
void cmSystemTools::FindCMakeResources(const char* argv0)
{
std::string exe_dir;
@@ -2166,18 +2167,23 @@ void cmSystemTools::FindCMakeResources(const char* argv0)
// Install tree has
// - "<prefix><CMAKE_BIN_DIR>/cmake"
// - "<prefix><CMAKE_DATA_DIR>"
if (cmHasSuffix(exe_dir, CMAKE_BIN_DIR)) {
// - "<prefix><CMAKE_DOC_DIR>"
if (cmHasLiteralSuffix(exe_dir, CMAKE_BIN_DIR)) {
std::string const prefix =
exe_dir.substr(0, exe_dir.size() - strlen(CMAKE_BIN_DIR));
cmSystemToolsCMakeRoot = prefix + CMAKE_DATA_DIR;
exe_dir.substr(0, exe_dir.size() - cmStrLen(CMAKE_BIN_DIR));
cmSystemToolsCMakeRoot = cmStrCat(prefix, CMAKE_DATA_DIR);
if (cmSystemTools::FileExists(
cmStrCat(prefix, CMAKE_DOC_DIR "/html/index.html"))) {
cmSystemToolsHTMLDoc = cmStrCat(prefix, CMAKE_DOC_DIR "/html");
}
}
if (cmSystemToolsCMakeRoot.empty() ||
!cmSystemTools::FileExists(
(cmSystemToolsCMakeRoot + "/Modules/CMake.cmake"))) {
cmStrCat(cmSystemToolsCMakeRoot, "/Modules/CMake.cmake"))) {
// Build tree has "<build>/bin[/<config>]/cmake" and
// "<build>/CMakeFiles/CMakeSourceDir.txt".
std::string dir = cmSystemTools::GetFilenamePath(exe_dir);
std::string src_dir_txt = dir + "/CMakeFiles/CMakeSourceDir.txt";
std::string src_dir_txt = cmStrCat(dir, "/CMakeFiles/CMakeSourceDir.txt");
cmsys::ifstream fin(src_dir_txt.c_str());
std::string src_dir;
if (fin && cmSystemTools::GetLineFromStream(fin, src_dir) &&
@@ -2185,13 +2191,18 @@ void cmSystemTools::FindCMakeResources(const char* argv0)
cmSystemToolsCMakeRoot = src_dir;
} else {
dir = cmSystemTools::GetFilenamePath(dir);
src_dir_txt = dir + "/CMakeFiles/CMakeSourceDir.txt";
src_dir_txt = cmStrCat(dir, "/CMakeFiles/CMakeSourceDir.txt");
cmsys::ifstream fin2(src_dir_txt.c_str());
if (fin2 && cmSystemTools::GetLineFromStream(fin2, src_dir) &&
cmSystemTools::FileIsDirectory(src_dir)) {
cmSystemToolsCMakeRoot = src_dir;
}
}
if (!cmSystemToolsCMakeRoot.empty() && cmSystemToolsHTMLDoc.empty() &&
cmSystemTools::FileExists(
cmStrCat(dir, "/Utilities/Sphinx/html/index.html"))) {
cmSystemToolsHTMLDoc = cmStrCat(dir, "/Utilities/Sphinx/html");
}
}
#else
// Bootstrap build knows its source.
@@ -2234,6 +2245,11 @@ std::string const& cmSystemTools::GetCMakeRoot()
return cmSystemToolsCMakeRoot;
}
std::string const& cmSystemTools::GetHTMLDoc()
{
return cmSystemToolsHTMLDoc;
}
std::string cmSystemTools::GetCurrentWorkingDirectory()
{
return cmSystemTools::CollapseFullPath(

View File

@@ -389,6 +389,7 @@ public:
static std::string const& GetCMakeCursesCommand();
static std::string const& GetCMClDepsCommand();
static std::string const& GetCMakeRoot();
static std::string const& GetHTMLDoc();
/** Get the CWD mapped through the KWSys translation map. */
static std::string GetCurrentWorkingDirectory();