ENH: support specifying build or source directory at command line.

This commit is contained in:
Clinton Stimpson 2007-11-13 00:33:22 -05:00
parent 073b109508
commit 47c53e867f
2 changed files with 23 additions and 7 deletions

View File

@ -16,6 +16,8 @@
=========================================================================*/ =========================================================================*/
#include "QCMake.h" // include to disable MS warnings #include "QCMake.h" // include to disable MS warnings
#include <QApplication> #include <QApplication>
#include <QFileInfo>
#include <QDir>
#include "CMakeSetupDialog.h" #include "CMakeSetupDialog.h"
@ -26,11 +28,26 @@ int main(int argc, char** argv)
app.setOrganizationName("Kitware"); app.setOrganizationName("Kitware");
app.setWindowIcon(QIcon(":/Icons/CMakeSetup.png")); app.setWindowIcon(QIcon(":/Icons/CMakeSetup.png"));
// TODO handle CMake args
CMakeSetupDialog dialog; CMakeSetupDialog dialog;
dialog.setWindowTitle("CMakeSetup"); dialog.setWindowTitle("CMakeSetup");
dialog.show(); dialog.show();
// for now: args support specifying build and/or source directory
QStringList args = app.arguments();
if(args.count() == 2)
{
QFileInfo buildFileInfo(args[1], "CMakeCache.txt");
QFileInfo srcFileInfo(args[1], "CMakeLists.txt");
if(buildFileInfo.exists())
{
dialog.setBinaryDirectory(buildFileInfo.absolutePath());
}
else if(srcFileInfo.exists())
{
dialog.setSourceDirectory(srcFileInfo.absolutePath());
dialog.setBinaryDirectory(QDir::currentPath());
}
}
return app.exec(); return app.exec();
} }

View File

@ -113,6 +113,10 @@ CMakeSetupDialog::CMakeSetupDialog()
this, SLOT(doHelp())); this, SLOT(doHelp()));
this->setAcceptDrops(true); this->setAcceptDrops(true);
// get the saved binary directories
QStringList buildPaths = this->loadBuildPaths();
this->BinaryDirectory->addItems(buildPaths);
// start the cmake worker thread // start the cmake worker thread
this->CMakeThread = new QCMakeThread(this); this->CMakeThread = new QCMakeThread(this);
@ -191,11 +195,6 @@ void CMakeSetupDialog::initialize()
QObject::connect(this->AddEntry, SIGNAL(clicked(bool)), QObject::connect(this->AddEntry, SIGNAL(clicked(bool)),
this, SLOT(addCacheEntry())); this, SLOT(addCacheEntry()));
// get the saved binary directories
QStringList buildPaths = this->loadBuildPaths();
this->BinaryDirectory->blockSignals(true);
this->BinaryDirectory->addItems(buildPaths);
this->BinaryDirectory->blockSignals(false);
if(!this->SourceDirectory->text().isEmpty() || if(!this->SourceDirectory->text().isEmpty() ||
!this->BinaryDirectory->lineEdit()->text().isEmpty()) !this->BinaryDirectory->lineEdit()->text().isEmpty())