Mercurial > dedupe
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)
