changeset 10:ec87a79770ee

Use boost find, to work around problems with QDir.
author Tom Fredrik Blenning Klaussen <bfg@blenning.no>
date Thu, 23 Aug 2012 00:26:45 +0200
parents b5943e4bf676
children f59ee8d3f8ea
files CMakeLists.txt CompileTimeConstants.h DataController.cpp
diffstat 3 files changed, 32 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/CMakeLists.txt	Wed Aug 22 18:48:07 2012 +0200
+++ b/CMakeLists.txt	Thu Aug 23 00:26:45 2012 +0200
@@ -5,7 +5,10 @@
 
 SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/CMake_Modules/")
 
-FIND_PACKAGE(Boost)
+SET(Boost_USE_STATIC_LIBS OFF)
+SET(Boost_USE_MULTITHREADED ON) 
+SET(Boost_USE_STATIC_RUNTIME OFF)
+FIND_PACKAGE(Boost COMPONENTS filesystem system)
 IF (Boost_FOUND)
     INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
     ADD_DEFINITIONS( "-DHAS_BOOST" )
@@ -51,19 +54,19 @@
 
 SET(CMAKE_CXX_FLAGS "-g2 -Wall -Werror -fno-inline")
 ADD_EXECUTABLE(DeDupe DeDupe.cpp ${SOURCES} ${MOC_SOURCES})
-TARGET_LINK_LIBRARIES(DeDupe ${QT_LIBRARIES} ${SQLITE3_LIBRARIES})
+TARGET_LINK_LIBRARIES(DeDupe ${QT_LIBRARIES} ${SQLITE3_LIBRARIES} ${Boost_LIBRARIES})
 
 ADD_EXECUTABLE(updateDeDupe updateDeDupe.cpp ${SOURCES} ${MOC_SOURCES})
-TARGET_LINK_LIBRARIES(updateDeDupe ${QT_LIBRARIES} ${SQLITE3_LIBRARIES})
+TARGET_LINK_LIBRARIES(updateDeDupe ${QT_LIBRARIES} ${SQLITE3_LIBRARIES} ${Boost_LIBRARIES})
 
 ENABLE_TESTING()
 
 ADD_EXECUTABLE(TestEditDistance TestEditDistance.cpp ${TEST_SOURCES})
 ADD_TEST(TestEditDistance TestEditDistance)
-TARGET_LINK_LIBRARIES(TestEditDistance ${QT_LIBRARIES})
+TARGET_LINK_LIBRARIES(TestEditDistance ${QT_LIBRARIES} ${Boost_LIBRARIES})
 
 ADD_EXECUTABLE(TestSqliteDBLink TestSqliteDBLink.cpp ${TEST_SOURCES})
 ADD_TEST(TestSqliteDBLink TestSqliteDBLink)
-TARGET_LINK_LIBRARIES(TestSqliteDBLink ${QT_LIBRARIES})
+TARGET_LINK_LIBRARIES(TestSqliteDBLink ${QT_LIBRARIES} ${Boost_LIBRARIES} )
 
 #ADD_PRECOMPILED_HEADER(TestEditDistance TestFramework.hpp)
--- a/CompileTimeConstants.h	Wed Aug 22 18:48:07 2012 +0200
+++ b/CompileTimeConstants.h	Thu Aug 23 00:26:45 2012 +0200
@@ -5,4 +5,8 @@
 #define DB_DEFAULT_LOCATION "~/.DeDupe.sqlite"
 #endif
 
+#ifndef USE_BOOST_FIND
+#define USE_BOOST_FIND 1
+#endif
+
 #endif //COMPILETIMECONSTANTS_H
--- a/DataController.cpp	Wed Aug 22 18:48:07 2012 +0200
+++ b/DataController.cpp	Thu Aug 23 00:26:45 2012 +0200
@@ -28,8 +28,26 @@
 #include <iostream>
 #include <memory>
 
+#include <boost/filesystem.hpp>
+
 void DataController::findFiles(const QDir& dir, QStringList& list)
 {
+#if USE_BOOST_FIND
+  namespace fs = boost::filesystem;
+  fs::path someDir(dir.path().toStdString());
+  fs::directory_iterator end_iter;
+
+  if ( fs::exists(someDir) && fs::is_directory(someDir)) {
+    for( fs::directory_iterator dir_iter(someDir) ; dir_iter != end_iter ; ++dir_iter) {
+      if (fs::is_directory(dir_iter->status()) ) {
+	findFiles(QString::fromStdWString(dir_iter->path().wstring()));
+      }
+      if (fs::is_regular_file(dir_iter->status()) ) {
+	list << QString::fromStdWString(dir_iter->path().wstring());
+      }
+    }
+  }
+#else
   foreach(QString filename, dir.entryList(QDir::NoDotAndDotDot | QDir::Dirs)) {
     filename = dir.absoluteFilePath(filename);
     findFiles(QDir(filename), list);
@@ -38,6 +56,8 @@
   foreach(QString filename, dir.entryList(QDir::Files | QDir::NoSymLinks)) {
     list << dir.absoluteFilePath(filename);
   }
+#endif
+
 }
 
 QStringList DataController::findFiles(const QDir& dir)