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

ENH: Absolute path to cmake resolved

Luis Ibanez 24 лет назад
Родитель
Сommit
f055e512ae

+ 46 - 21
Source/FLTKDialog/CMakeSetupGUIImplementation.cxx

@@ -1,14 +1,14 @@
 
 #include "CMakeSetupGUIImplementation.h"
-#include "FL/fl_file_chooser.H"
-#include "FL/filename.H"
-#include "FL/fl_ask.H"
+#include "Fl/fl_file_chooser.H"
+#include "Fl/filename.H"
+#include "Fl/fl_ask.H"
 #include "cstring"
 #include "../cmCacheManager.h"
 #include "../cmMakefile.h"
 #include <iostream>
 #include "FLTKPropertyList.h"
-#include "FL/fl_draw.H"
+#include "Fl/fl_draw.H"
 #include "../cmake.h"
 
 
@@ -20,22 +20,6 @@ CMakeSetupGUIImplementation
 ::CMakeSetupGUIImplementation()
 {
   m_BuildPathChanged = false;
-
-// Construct the full path to cmake executable
-
-#if defined(_WIN32)
-  char fname[1024];
-  ::GetModuleFileName(NULL,fname,1023);  // Didn't found this method. (?)
-  m_PathToExecutable = cmSystemTools::GetProgramPath(fname).c_str();
-  m_PathToExecutable += "/cmake.exe";
-#else
-  char fullPathToCMake[1024];
-  filename_absolute( fullPathToCMake, "../cmake" );
-  m_PathToExecutable = fullPathToCMake;
-#endif
-
-  std::cout << "Path to CMake executable " << m_PathToExecutable << std::endl;
-  
 }
 
 
@@ -130,6 +114,47 @@ CMakeSetupGUIImplementation
 
 
 
+/**
+ * Set path to executable. Used to get the path to CMake
+ */
+void
+CMakeSetupGUIImplementation
+::SetPathToExecutable( const char * path )
+{
+  m_PathToExecutable = path;
+  
+  char expandedPath[1024];
+  filename_expand( expandedPath, path );
+  
+  char absolutePath[1024];
+  filename_absolute( absolutePath, expandedPath );
+
+  char * p = absolutePath + strlen( absolutePath );
+  while( *p != '/'  && *p != '\\' ) 
+  {
+    p--;
+  }
+  p--;
+  while( *p != '/'  && *p != '\\' ) 
+  {
+    p--;
+  }
+  *p = '\0';
+  
+  std::cout << "absolutePath = " << absolutePath << std::endl;
+  
+  m_PathToExecutable = absolutePath;
+
+#if defined(_WIN32)
+  m_PathToExecutable += "/CMake.exe";
+#else
+  m_PathToExecutable += "/cmake";
+#endif
+  std::cout << "Path to CMake executable = "  << m_PathToExecutable << std::endl;
+}
+
+
+
 /**
  * Set the source path
  */
@@ -358,7 +383,7 @@ CMakeSetupGUIImplementation
     {
     cmCacheManager::GetInstance()->LoadCache( m_WhereBuild.c_str() );
     this->FillCacheGUIFromCacheManager();
-	}
+  }
 }
    
 

+ 1 - 0
Source/FLTKDialog/CMakeSetupGUIImplementation.h

@@ -32,6 +32,7 @@ public:
   virtual void LoadCacheFromDiskToGUI( void );
   virtual void FillCacheGUIFromCacheManager( void );
   virtual void FillCacheManagerFromCacheGUI( void );
+	virtual void SetPathToExecutable( const char * path );
 
 private:  
   virtual bool VerifyBinaryPath( const std::string & path ) const;

+ 2 - 1
Source/FLTKDialog/FLTKDialog.cxx

@@ -3,7 +3,7 @@
 #include "FL/Fl.h"
 #include "FL/fl_ask.H"
 
-int main() 
+int main(int argc, char * argv[] ) 
 {
 
   fl_message_font(FL_HELVETICA,11);
@@ -11,6 +11,7 @@ int main()
   CMakeSetupGUIImplementation * gui 
        = new CMakeSetupGUIImplementation;
 
+  gui->SetPathToExecutable( argv[0] );
   gui->Show();
   gui->LoadCacheFromDiskToGUI();
 

+ 5 - 4
Source/FLTKDialog/FLTKPropertyNameButtonWithHelp.cxx

@@ -1,8 +1,9 @@
-#include "FLTKPropertyNameButtonWithHelp.h"
-#include <FL/Fl.H>
-#include <FL/fl_ask.H>
-#include <FL/Fl_Menu_Button.H>
+// #include <FLTKPropertyNameButtonWithHelp.h>
+#include <Fl/Fl.H>
+#include <Fl/fl_ask.H>
+#include <Fl/Fl_Menu_Button.H>
 #include "../cmCacheManager.h"
+#include "FLTKPropertyNameButtonWithHelp.h"
 
 
 namespace fltk {