[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdevelop
From:       Aleix Pol Gonzalez <aleixpol () gmail ! com>
Date:       2009-07-27 1:51:37
Message-ID: 1248659497.566126.20501.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1002810 by apol:

Properly pick the correct root directory when working with subprojects.

 M  +1 -1      projectbuilders/cmakebuilder/cmakejob.cpp  
 M  +8 -7      projectmanagers/cmake/cmakemanager.cpp  
 M  +0 -1      projectmanagers/cmake/cmakemanager.h  
 M  +8 -0      projectmanagers/cmake/cmakeutils.cpp  
 M  +5 -0      projectmanagers/cmake/cmakeutils.h  


--- trunk/KDE/kdevelop/projectbuilders/cmakebuilder/cmakejob.cpp #1002809:1002810
@@ -153,7 +153,7 @@
         KConfigGroup group(cfg.data(), "CMake");
         args << QString("-DCMAKE_INSTALL_PREFIX=%1").arg(CMake::currentInstallDir(project).toLocalFile());
                
         args << QString("-DCMAKE_BUILD_TYPE=%1").arg(CMake::currentBuildType(project));
                
-        args << project->folder().toLocalFile();
+        args << CMake::projectRoot(project).toLocalFile();
     }
     return args;
 }
--- trunk/KDE/kdevelop/projectmanagers/cmake/cmakemanager.cpp #1002809:1002810
@@ -180,7 +180,9 @@
         return path;
     }
 
-    KUrl projectPath = m_realRoot[item->project()];
+    //Can't get it from item->project()->projectItem()->url() because
+    //it might not be created yet.
+    KUrl projectPath = CMake::projectRoot(item->project());
     QString relative=KUrl::relativeUrl( projectPath, fi->url() );
     path.addPath(relative);
     path.cleanPath();
@@ -303,7 +305,6 @@
             }
         }
 
-        m_realRoot[project] = folderUrl;
         m_watchers[project] = new KDirWatch(project);
         m_rootItem = new CMakeFolderItem(project, folderUrl.url(), 0 );
         m_rootItem->setProjectRoot(true);
@@ -368,14 +369,14 @@
             
             KDevelop::ReferencedTopDUContext curr;
             if(item->parent()==0)
-                curr=initializeProject(item->project(), \
m_realRoot[item->project()]); +                \
curr=initializeProject(item->project(), item->project()->projectItem()->url());  else
                 curr=dynamic_cast<CMakeFolderItem*>(folder->parent())->topDUContext();
  
             kDebug(9042) << "Adding cmake: " << cmakeListsPath << " to the model";
 
             m_watchers[item->project()]->addFile(cmakeListsPath.toLocalFile());
-            QString \
binDir=KUrl::relativePath(m_realRoot[folder->project()].toLocalFile(), \
folder->url().toLocalFile()); +            QString \
binDir=KUrl::relativePath(folder->project()->projectItem()->url().toLocalFile(), \
folder->url().toLocalFile());  if(binDir.startsWith("./"))
                 binDir=binDir.remove(0, 2);
             
@@ -600,7 +601,7 @@
 QList<KDevelop::ProjectTargetItem*> CMakeManager::targets() const
 {
     QList<KDevelop::ProjectTargetItem*> ret;
-    foreach(IProject* p, m_realRoot.keys())
+    foreach(IProject* p, m_watchers.keys())
     {
         ret+=p->projectItem()->targetList();
     }
@@ -664,7 +665,7 @@
         return;
     }
 
-    QString currentBinDir=KUrl::relativeUrl(m_realRoot[project], url);
+    QString currentBinDir=KUrl::relativeUrl(project->projectItem()->url(), url);
     vm->insert("CMAKE_CURRENT_BINARY_DIR", \
                QStringList(vm->value("CMAKE_BINARY_DIR")[0]+currentBinDir));
     vm->insert("CMAKE_CURRENT_LIST_FILE", \
                QStringList(cmakeListsPath.toLocalFile(KUrl::RemoveTrailingSlash)));
     vm->insert("CMAKE_CURRENT_SOURCE_DIR", \
QStringList(url.toLocalFile(KUrl::RemoveTrailingSlash))); @@ -722,7 +723,7 @@
         CMakeFolderItem *it=static_cast<CMakeFolderItem*>(files.first()->parent());
 
         KDevelop::IProject* proj=it->project();
-        KUrl projectBaseUrl=m_realRoot[proj];
+        KUrl projectBaseUrl=proj->projectItem()->url();
         projectBaseUrl.adjustPath(KUrl::AddTrailingSlash);
 
         kDebug(9032) << "reload:" << dir << projectBaseUrl << (dir!=projectBaseUrl);
--- trunk/KDE/kdevelop/projectmanagers/cmake/cmakemanager.h #1002809:1002810
@@ -137,7 +137,6 @@
     QMap<KDevelop::IProject*, MacroMap> m_macrosPerProject;
     QMap<KDevelop::IProject*, KDirWatch*> m_watchers;
     QMap<KDevelop::IProject*, CacheValues> m_projectCache;
-    QMap<KDevelop::IProject*, KUrl> m_realRoot;
     
     CMakeDocumentation* m_doc;
     ICMakeBuilder* m_builder;
--- trunk/KDE/kdevelop/projectmanagers/cmake/cmakeutils.cpp #1002809:1002810
@@ -104,6 +104,14 @@
     return false;
 }
 
+KUrl projectRoot(KDevelop::IProject* project)
+{
+    KUrl projectPath = project->folder();
+    bool correct=projectPath.cd(CMake::projectRootRelative(project));
+    Q_ASSERT(correct);
+    return projectPath;
+}
+
 KUrl currentBuildDir( KDevelop::IProject* project )
 {
     KConfigGroup cmakeGrp = project->projectConfiguration()->group("CMake");
--- trunk/KDE/kdevelop/projectmanagers/cmake/cmakeutils.h #1002809:1002810
@@ -69,6 +69,11 @@
      * Sets the current build dir for the given project.
      */
     KDEVCMAKECOMMON_EXPORT QString projectRootRelative( KDevelop::IProject* project \
); +    
+    /**
+     * Convenience function to get the project root.
+     */
+    KDEVCMAKECOMMON_EXPORT KUrl projectRoot( KDevelop::IProject* project );
 
     /**
      * Sets the current install dir for the given project.


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic