Просмотр исходного кода

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

Clinton Stimpson 18 лет назад
Родитель
Сommit
47c53e867f
2 измененных файлов с 23 добавлено и 7 удалено
  1. 19 2
      Source/QtDialog/CMakeSetup.cxx
  2. 4 5
      Source/QtDialog/CMakeSetupDialog.cxx

+ 19 - 2
Source/QtDialog/CMakeSetup.cxx

@@ -16,6 +16,8 @@
 =========================================================================*/
 #include "QCMake.h"  // include to disable MS warnings
 #include <QApplication>
+#include <QFileInfo>
+#include <QDir>
 
 #include "CMakeSetupDialog.h"
 
@@ -26,11 +28,26 @@ int main(int argc, char** argv)
   app.setOrganizationName("Kitware");
   app.setWindowIcon(QIcon(":/Icons/CMakeSetup.png"));
 
-  // TODO handle CMake args
-    
   CMakeSetupDialog dialog;
   dialog.setWindowTitle("CMakeSetup");
   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();
 }

+ 4 - 5
Source/QtDialog/CMakeSetupDialog.cxx

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