Verzeichnissuche

Proggen.org - Lernprojekt: Duplikatefinder
Benutzeravatar
Bebu
Beiträge: 562
Registriert: Mi Okt 21, 2009 6:19 pm
Wohnort: In der Nähe von Salzburg - Bin aber kein Österreicher!

Re: Verzeichnissuche

Beitrag von Bebu » So Aug 08, 2010 10:08 pm

Uff, was für ein Monsterkommentar, dann wollen wir mal...
dani93 hat geschrieben:
Gleich mal die Dateinamen: Wenn sie die Methoden zum Durchsuchen von Verzeichnissen enthalten, wäre es doch sinnvoll sie filesearch.h und filesearch.cpp zu nennen.
Des weiteren finde ich das irgendwie widersprüchlich:

Code: Alles auswählen

    /**
      *This class represents the search-module.
      *It starts a thread for the search and
      *is searching recursivly all files below the
      *given path.
      */

    class File
Wenn ich (als nicht-Ersteller dieser Klasse) den Namen "File" lese, denke ich an eine einzelne Datei. Das dürfte bei dir wohl "FileInfo" sein.
Die Dateien hießen bereits einmal Filesearch, habe ich aber, nachdem Xin sein Interface hochgeladen hat, darauf angepasst, ohne darüber nachzudenken, dass da bestimmt noch mindestens eine Klasse zwischengeschaltet werden wird. Kann ich also problemlos wieder zurückändern.
dani93 hat geschrieben: Deine Schreibweise bei den Konstruktoren finde ich nicht sehr übersichtlich:

Code: Alles auswählen

FileSearch::File::File( std::string &start_path,
                        std::string &argv0 )
:
Path( start_path ),
ProgramPath( argv0 ),
SearchState( Dedupe::State::sleep ),
FileCounter( 0 ),
DirectoryCounter( 0 )
{
  Path = CreateAbsolutePath( Path );
  Directorys.push_back( Path );
  pthread_create( &SearchThread,NULL,Thread,this );
};
Wie wär's damit:

Code: Alles auswählen

FileSearch::File::File( std::string &start_path, std::string &argv0 ) :
                           Path( start_path ),
                           ProgramPath( argv0 ),
                           SearchState( Dedupe::State::sleep ),
                           FileCounter( 0 ),
                           DirectoryCounter( 0 )
{
  Path = CreateAbsolutePath( Path );
  Directorys.push_back( Path );
  pthread_create( &SearchThread,NULL,Thread,this );
};
OK allerdings finde ich, man sollte die Aufrufargumente der Klasse gut von der Konstruktorliste unterscheiden können, aber ich gebe zu, dass das wohl eine Geschmacksfrage ist. Mal sehen wie andere das beurteilen.
dani93 hat geschrieben: Wo wir gerade bei der Formatierung sind... haben wir uns auf eine maximale Zeilenbreite geeinigt? 80 Zeichen wären auch für Konsolen-Editoren optimal, jedoch finde ich das etwas wenig.
Also ich habe mich bisher an die 80 Zeichen gehalten und auch wenn es manchmal vom Platz her etwas knapp wird, ist es machbar
dani93 hat geschrieben: Ein paar Methoden geben Vektoren zurück, z.B.:

Code: Alles auswählen

typedef std::vector<Dedupe::FileInfo> SearchResult;
SearchResult GetFiles();
Jetzt stell dir vor du hast ein paar tausend (millionen?) Suchergebnisse und gibst diese zurück. Der komplette Vektor (und damit jeder einzelne Wert im Vektor) wird kopiert... Wesentlich effizienter wäre es eine konstante Referenz zurückzugeben.
Das würde ich ohne Widerspruch auch so sehen. Da fällt mir das Wort Bugtracker ein (Sorry für den Seitenhieb Xin)
dani93 hat geschrieben: Irgendwo habe ich folgende Zeilen gesehen:

Code: Alles auswählen

  if( existing == true &&
      readable == true &&
      filetyp == FileSearch::TFile ||
      filetyp == FileSearch::TDirectory )
Ich kenne deinen Algorithmus nicht und weiß nicht was genau du hier überprüfst (naja die ersten beiden Zeilen kann ich mir schon denken ^^), aber das riecht geradezu nach Fehler ^^
Bist du dir bei dieser Formulierung sicher? Überdenke wie diese Bedingung ausgewertet wird und (egal ob es richtig ist oder nicht) setze entsprechende Klammern.
Doch da bin ich mir eigentlich ziemlich sicher. Wenn auch nur eine dieser Bedingungen nicht erfüllt ist, dann ist die Datei für die Dateisuche Müll und wird entsprechend verwertet.
dani93 hat geschrieben: Weiters hat die Methode FileSearch::File::Thread kein return, obwohl void * als Rückgabetyp angegeben wurde, aber das hat dir dein Compiler hoffentlich auch schon gesagt :)
Er hat es nicht moniert, liegt wohl daran, das die Warnstufe in meiner IDE zu niedrig eingestellt ist. Das bringt mich auf den Gedanken, das in CMake wohl noch ein bisschen was fehlt. Wenn ich ein Projekt für CodeBlocks erzeuge, dann kann ich das Ergebnis zwar Kompilieren, aber nicht ausführen, weil das Buildtarget per Standard auf Commands only steht.
Aber abgesehen davon, sollte das Return an der Stelle nie nötig werden, weil diese Funktion nur zum Anschubsen dient und nie bis zum Return kommen sollte.
dani93 hat geschrieben: Kleiner Hinweis:

Code: Alles auswählen

  execpath.erase( ProgramPath.find_last_of( "/" ) + 1,
                  ProgramPath.length() );
Den zweiten Parameter kannst du dir sparen, es wird über ein Default-Parameter der komplette restliche String gelöscht, siehe:
http://www.cplusplus.com/reference/string/string/erase/
Wusste ich nicht.
dani93 hat geschrieben: So... nun zur Sprache ;)
Für die Funktionalität des Programms unbedeutend, trotzdem finde ich es wichtig, dass man sich (sowohl in Kommentaren, als auch in Variablennamen etc.) zumindest grob an die Grammatik hält.
Bis auf den Satzanfang wird normalerweise alles klein geschrieben (Ausnahme: Eigennamen, in diesem Fall auch Variablennamen etc.).
Mehrzahl wird bis auf wenige Ausnahmen durch das simple Anhängen eines 's' erreicht ("path" wird zu "paths" und nicht zu "pathes"). Befindet sich ein 'y' am Ende des Wortes wird dieses nach "ie" aufgelöst ("directory" wird zu "directories" und nicht zu "directorys").
Mir fällt jetzt keine Regel dazu ein, es heißt aber "is_stopped" und nicht "is_stoped" ^^
Grammatik-Leerstunde-Ende :D
Ich vermute jetzt einfach mal spontan, deine letzte Englischstunde ist noch nicht so lange her, wie meine ;)
Abgesehen vom Interface steht das jetzt nicht ganz oben auf meiner Prioritätenliste, das werde ich korrigieren, wenn das Ding fehlerfrei läuft und mir langweilig sein sollte. Aber danke für den Hinweis, vieles davon hatte ich schon wieder vergessen.
dani93 hat geschrieben: Wie bereits im ersten Satz gesagt sind das Verbesserungsvorschläge, es liegt also an dir die Vorschläge zu überdenken und Verbesserungen vorzunehmen - oder eben nicht. Den Code habe ich wie erwähnt nur überflogen, also korrigiere ich hier vielleicht auch Sachen ohne sie im notwendigen Kontext zu sehen ^^
Halbe Halbe würde ich sagen ;)

So jetzt zu Xin:
Xin hat geschrieben:Wie sieht es denn aus mit dem Framework?

Momentan verabschiedet es sich bei mir in einer Endlosschleife. (Er findet das Verzeichnis '.' und dann hakts).
Ich würde es gerne verwenden, um den Inhalt eines Verzeichnisses auszulesen. Die NCurses-Version braucht schließlich auch einen Datei-Browser.
Ok das mit der Endlosschleife ist ein neuer Bug, damit wäre ich schon bei vier bekannten Fehlern, von denen mir zwei noch echtes Kopfzerbrechen bereiten, einer einfach zu fixen ist und deiner, zu dem mir natürlich die näheren Informationen fehlen.Ich werde noch ein bisschen Zeit brauchen, bis das ganze stabil läuft, die zwei Bugs erscheinen mir nicht plausible, aber ich habe noch nicht jede Funktion im einzelnen getestet, so das es auch nur eine Kleinigkeit sein kann, die mir Probleme macht. Diese Wochende war mein Freundin da, also ist nichts passiert ;)
Wer immer nach dem Unerreichbaren jagt, der wird irgendwann auf die Schnauze fallen!

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Verzeichnissuche

Beitrag von nufan » So Aug 08, 2010 10:29 pm

Bebu hat geschrieben:OK allerdings finde ich, man sollte die Aufrufargumente der Klasse gut von der Konstruktorliste unterscheiden können, aber ich gebe zu, dass das wohl eine Geschmacksfrage ist. Mal sehen wie andere das beurteilen.
Du kannst ja die Initialisierungsliste hinter die Argumente stellen, allerdings werden dann die 80 Zeichen sehr knapp:

Code: Alles auswählen

FileSearch::File::File( std::string &start_path, std::string &argv0 ) : Path( start_path ),
                                                                        ProgramPath( argv0 ),
                                                                        SearchState( Dedupe::State::sleep ),
                                                                        FileCounter( 0 ),
                                                                        DirectoryCounter( 0 )
{
  Path = CreateAbsolutePath( Path );
  Directorys.push_back( Path );
  pthread_create( &SearchThread,NULL,Thread,this );
};
Gar nicht so leicht das im Forum hinzubekommen...
Bebu hat geschrieben:
dani93 hat geschrieben:Irgendwo habe ich folgende Zeilen gesehen:

Code: Alles auswählen

  
if( existing == true &&
    readable == true &&
    filetyp == FileSearch::TFile ||
    filetyp == FileSearch::TDirectory )
Ich kenne deinen Algorithmus nicht und weiß nicht was genau du hier überprüfst (naja die ersten beiden Zeilen kann ich mir schon denken ^^), aber das riecht geradezu nach Fehler ^^
Bist du dir bei dieser Formulierung sicher? Überdenke wie diese Bedingung ausgewertet wird und (egal ob es richtig ist oder nicht) setze entsprechende Klammern.
Doch da bin ich mir eigentlich ziemlich sicher. Wenn auch nur eine dieser Bedingungen nicht erfüllt ist, dann ist die Datei für die Dateisuche Müll und wird entsprechend verwertet.
Etwas schöner:

Code: Alles auswählen

  
if( (existing == true && readable == true && filetyp == FileSearch::TFile) ||
    (filetyp == FileSearch::TDirectory) )
Der Code im if wird ausgeführt, wenn:
* die Datei existiert, lesbar ist und die Variable "filetyp" den Wert "FileSearch::TFile" hat
ODER
* die Variable "filetyp" den Wert "FileSearch::TDirectory" hat.
Folgender Code steht im if:

Code: Alles auswählen

return Dedupe::State::file_ok;
Ich kann mir nicht vorstellen, dass die Datei ok sein kann, wenn sie nichtmals existiert... Und selbst wenn eine nicht-existierende Datei nie den Typ "FileSearch::TDirectory" haben kann, solltest man das doch schöner formulieren können.
Vielleicht ein kleiner Code-Schnipsel dazu:

Code: Alles auswählen

#include <stdio.h>

int returnTrue(const char *const text);
int returnFalse(const char *const text);

int main()
{
  
  if(returnFalse("wird immer ausgewertet") &&
     returnFalse("wird nur ausgewertet wenn vorheriges wahr") &&
     returnFalse("wird nur ausgewertet wenn beide vorherigen wahr") ||
     returnTrue("???"))
  {
    printf("surprise!\n");
  }
  
  return 0;
  
}


int returnTrue(const char *const text)
{

  printf("%s\n", text);
  return 1;

}


int returnFalse(const char *const text)
{

  printf("%s\n", text);
  return 0;

}
Übrigens zeigt mir gcc mit dem -Wall-Flag eine passende Warnung an:
warning: suggest parentheses around ‘&&’ within ‘||’
Bebu hat geschrieben:Er hat es nicht moniert, liegt wohl daran, das die Warnstufe in meiner IDE zu niedrig eingestellt ist.
Ich würde dir raten den -Wall-Flag zu aktivieren um alle Warnungen angezeigt zu bekommen.
Bebu hat geschrieben:Wusste ich nicht.
Keine Schande, war ja auch nicht wirklich falsch.
Bebu hat geschrieben:Ich vermute jetzt einfach mal spontan, deine letzte Englischstunde ist noch nicht so lange her, wie meine ;)
Ca. 1 Monat ^^
Bebu hat geschrieben:Abgesehen vom Interface steht das jetzt nicht ganz oben auf meiner Prioritätenliste, das werde ich korrigieren, wenn das Ding fehlerfrei läuft und mir langweilig sein sollte. Aber danke für den Hinweis, vieles davon hatte ich schon wieder vergessen.
Natürlich ist das nicht so wichtig, vor allem nicht bei den Kommentaren. Aber je öfters du eine falsch geschriebene Variable verwendest, desto öfter musst du sie später auch korrigieren...

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Verzeichnissuche

Beitrag von Xin » Mo Aug 09, 2010 11:26 am

Bebu hat geschrieben: So jetzt zu Xin:
Xin hat geschrieben:Wie sieht es denn aus mit dem Framework?

Momentan verabschiedet es sich bei mir in einer Endlosschleife. (Er findet das Verzeichnis '.' und dann hakts).
Ich würde es gerne verwenden, um den Inhalt eines Verzeichnisses auszulesen. Die NCurses-Version braucht schließlich auch einen Datei-Browser.
Ok das mit der Endlosschleife ist ein neuer Bug, damit wäre ich schon bei vier bekannten Fehlern, von denen mir zwei noch echtes Kopfzerbrechen bereiten, einer einfach zu fixen ist und deiner, zu dem mir natürlich die näheren Informationen fehlen.Ich werde noch ein bisschen Zeit brauchen, bis das ganze stabil läuft, die zwei Bugs erscheinen mir nicht plausible, aber ich habe noch nicht jede Funktion im einzelnen getestet, so das es auch nur eine Kleinigkeit sein kann, die mir Probleme macht. Diese Wochende war mein Freundin da, also ist nichts passiert ;)
Wird Zeit für'n Bugzilla ^^



Es wäre klasse, wenn Du die Routinen zur Verzeichnissuche dem trunk zuführen könntest (alles auschecken und die Dateien mit "svn cp" an ihren Bestimmungsort im Trunk zuführen), damit sie dem eigentlichen Projekt zur Verfügung stehen.

Weiterhin bitte ich ganz allgemein, Test-Programme mit Parametern auszustatten, so dass man sich nicht bei jedem Test durch Menüs arbeiten muss, sondern einfach den Befehl erneut aufrufen kann.
Zum Beispiel './scanner /home/xin start' statt './scanner', Pfad eingeben, 2 (für start) + Return
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Bebu
Beiträge: 562
Registriert: Mi Okt 21, 2009 6:19 pm
Wohnort: In der Nähe von Salzburg - Bin aber kein Österreicher!

Re: Verzeichnissuche

Beitrag von Bebu » Mo Aug 09, 2010 8:02 pm

Xin hat geschrieben: Es wäre klasse, wenn Du die Routinen zur Verzeichnissuche dem trunk zuführen könntest (alles auschecken und die Dateien mit "svn cp" an ihren Bestimmungsort im Trunk zuführen), damit sie dem eigentlichen Projekt zur Verfügung stehen.
OK, ich werde noch das eine oder andere fixen und es dann nach Trunk kopieren. Sagen wir mal die Deathline dafür, ist in zwei Tagen, egal ob ich die Fixes jetzt in dem Umfang schaffe, oder nicht.
Xin hat geschrieben: Weiterhin bitte ich ganz allgemein, Test-Programme mit Parametern auszustatten, so dass man sich nicht bei jedem Test durch Menüs arbeiten muss, sondern einfach den Befehl erneut aufrufen kann.
Zum Beispiel './scanner /home/xin start' statt './scanner', Pfad eingeben, 2 (für start) + Return
Werde ich für das nächste Testprogramm so machen, nur für IDE User ist es so einfacher.
Wer immer nach dem Unerreichbaren jagt, der wird irgendwann auf die Schnauze fallen!

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Verzeichnissuche

Beitrag von Xin » Mo Aug 09, 2010 8:39 pm

Bebu hat geschrieben:OK, ich werde noch das eine oder andere fixen und es dann nach Trunk kopieren. Sagen wir mal die Deathline dafür, ist in zwei Tagen, egal ob ich die Fixes jetzt in dem Umfang schaffe, oder nicht.
Ich will versuchen die Tage einen Bugzilla aufzusetzen, dort können wir die Sachen dann dokumentieren.
Bebu hat geschrieben:
Xin hat geschrieben: Weiterhin bitte ich ganz allgemein, Test-Programme mit Parametern auszustatten, so dass man sich nicht bei jedem Test durch Menüs arbeiten muss, sondern einfach den Befehl erneut aufrufen kann.
Zum Beispiel './scanner /home/xin start' statt './scanner', Pfad eingeben, 2 (für start) + Return
Werde ich für das nächste Testprogramm so machen, nur für IDE User ist es so einfacher.
Du kannst die Parameter auch bei der Entwicklungsumgebung eingeben.
Ansonsten mach einen Parameter "Frag mich für die IDE" ;-)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Bebu
Beiträge: 562
Registriert: Mi Okt 21, 2009 6:19 pm
Wohnort: In der Nähe von Salzburg - Bin aber kein Österreicher!

Re: Verzeichnissuche

Beitrag von Bebu » Mo Aug 09, 2010 9:20 pm

Xin hat geschrieben: Ansonsten mach einen Parameter "Frag mich für die IDE" ;-)
Du weißt wohl noch nicht, das ich von Natur aus faul bin :P
Wer immer nach dem Unerreichbaren jagt, der wird irgendwann auf die Schnauze fallen!

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Verzeichnissuche

Beitrag von Kerli » Di Aug 10, 2010 12:00 am

Wenn wir schon dabei sind:

Code: Alles auswählen

/*!
 * @file advanced_fileinfo.h
 * @brief this struct is used to transfer the information from
 * class File to class FileInfo and files or others, that could
 * not be handled by this class
 * @details
 * @author Bernhard Buchwinkler
 * @date august 2010
 */
Dieser Header ist irgendwie nicht sehr klar bzw. verständlich geschrieben. Zuerst einmal beginnt er mit @file was noch in Ordnung ist doch dann folgt gleich darauf der Text "this struct[...]", dabei war doch gerade noch von einem "file" die Rede?! Und am Ende dieses Textblocks ist dann auf einmal sogar noch von "this class" die Rede (Ja, ihr habt recht Klassen und Strukturen sind sehr ähnlich, aber trotzdem :) )
Abgesehen davon sollte die Beschreibung einer Klasse/Struktur/Whatever immer so nahe wie möglich bei dem entsprechenden Gebilde sein. Für die Struktur also am Besten direkt darüber was eigentlich eh schon der Fall ist (Einzig das @brief könnte man eventuell noch ergänzen).

Code: Alles auswählen

  struct AdvFileInfo
  {
    // [...]
    std::string DateChanged;///<Date of last filechange jjjj/mm/dd/hh/mm/ss
  };
Warum heißt die Struktur "AdvFileInfo" wo im Dateinamen das "Advanced" noch ausgeschrieben ist? Im Allgemeinen bin ich eher gegen solche Abkürzungen, da man nicht immer gleich eindeutig erkennen kann was sie bedeuten und die Ausrede wegen weniger Tippaufwand zählt im Zeitalter von Autovervollständigung nicht mehr ;) Außerdem könnte man für "DateChanged" mit einem Timestamp als zb "long long" (bzw. besser gleiche time_t) Platz sparen können und auch leichter mit anderen Datumsangaben vergleichen können.

Code: Alles auswählen

short Typ;        ///<Typ from FileTyp
Warum short? Es gibt doch das enum "FileTyp"... Außerdem schreibt man Typ auf Englisch mit einem "e" am Schluss...

Achja, das soll kein Angriff sein sondern nur konstruktive Kritik zu Punkten die mir gerade aufgefallen sind ;)
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Verzeichnissuche

Beitrag von Xin » Di Aug 10, 2010 10:09 am

Kerli hat geschrieben:

Code: Alles auswählen

  struct AdvFileInfo
  {
    // [...]
    std::string DateChanged;///<Date of last filechange jjjj/mm/dd/hh/mm/ss
  };
Warum heißt die Struktur "AdvFileInfo" wo im Dateinamen das "Advanced" noch ausgeschrieben ist? Im Allgemeinen bin ich eher gegen solche Abkürzungen, da man nicht immer gleich eindeutig erkennen kann was sie bedeuten und die Ausrede wegen weniger Tippaufwand zählt im Zeitalter von Autovervollständigung nicht mehr ;)
Und wie das zieht!

Es gibt Abkürzungen und Erweiterungen, die quasi Standard sind und die auch gepflegt werden sollten. Dazu gehören Prefixe, wie "has", "is", "get", "set" genauso, wie Abkürzungen "Ext", "Struct", "Ip".

Neben der Tatsache, dass ich eher tippe, als Autovervollständige (was mir komischerweise immer nur 5000 Dinge anbietet, die fast ähnlich geschrieben werde und sich in der 15 Stelle unterscheiden), weil das Auswählen des gewünschten Elements meist länger dauert, als es auszuschreiben, habe ich ich auch keinen Bock ein C++-File als Prosa-Literatur aufzufassen und fordere von dem Entwicklern, dass sie sich unter "Adv" Advanced herleiten können und wissen, dass es sich nicht um "Advertisement" handelt. Wenn Entwickler zu faul zum denken sind und nicht verstehen was sie da bearbeiten, dann sollten sie bitte auch die Finger davon lassen.

Von Bebu allerdings erwarte ich das "Adv" allerdings auch im Dateinamen.
Just my 0,02 Euro.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Bebu
Beiträge: 562
Registriert: Mi Okt 21, 2009 6:19 pm
Wohnort: In der Nähe von Salzburg - Bin aber kein Österreicher!

Re: Verzeichnissuche

Beitrag von Bebu » Di Aug 10, 2010 11:28 pm

So, jetzt melde ich mich hier wieder zu Wort. Ich hatte leider noch keine Zeit, alle Verbesserungsvorschläge umzusetzen, vor allem weil viele davon eher kosmetischer Natur sind und nicht über die Funktionalität entscheiden. Aber ich werde mir alle noch einmal genau durchsehen und sie, soweit sinnvoll umsetzen. Einzelne sind schon drinnen.

So jetzt zum eigentlichen Grund meines Posts: Ich möchte jeden, der kein Windows hat, bitten das Modul etwas zu testen. Bei mir läuft es mittlerweile stabil und es wird Zeit für genauere Tests. Mir ist momentan nur ein Bug bekannt: Ein zweiter Aufruf von Start() führt zu einem Segmentation fault Fehler. Dieser Bug wird aber auch in einer der nächsten Versionen gefixt. Ich bitte um Rückmeldung und weitere Verbesserungsvorschläge.

Nach dem Bugfix werde ich eine Möglichkeit einbauen, die Rekursion abzuschalten um es, wie von Xin gewünscht, als Dateibrowser für die Ncurses Oberfläche nutzen zu können.

@fatlobyte: Ich habe mal alle Header zur Sourceliste hinzugefügt, damit sie von Cmake im CodeBlocks Generator mit einbezogen werden. Außerdem linke ich noch pthread dazu, weil ich momentan nicht vom Hauptverzeichnis aus bauen kann. Entweder ist das Absicht, oder da gibt es noch einen Fehler.
Wer immer nach dem Unerreichbaren jagt, der wird irgendwann auf die Schnauze fallen!

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Verzeichnissuche

Beitrag von fat-lobyte » Mi Aug 11, 2010 5:34 pm

Bebu hat geschrieben:@fatlobyte: Ich habe mal alle Header zur Sourceliste hinzugefügt, damit sie von Cmake im CodeBlocks Generator mit einbezogen werden.

Bin ja eigentlich dagegen Header als "Quellen" zu bezeichnen, da sie ja eigentlich nicht kompiliert werden müssen, aber jetzt weiß ich schon mal warum die immer hinzugefügt werden ^^
Frage an die Runde: welche IDE's unter welchen Plattformen sind denn im Einsatz? Wie (mit welchen Generators) baut ihr das Projekt?
Bebu hat geschrieben:Außerdem linke ich noch pthread dazu, weil ich momentan nicht vom Hauptverzeichnis aus bauen kann.
Entweder ist das Absicht, oder da gibt es noch einen Fehler.
Ich glaube eher eine Fehler... Jetzt hab ich da ein bisschen was geändert, die libpthread wird jetzt "logisch" zur libdedupe-filesearch "gelinkt", das äußert sich in der Realität dadurch, dass überall wo libdedupe-filesearch gelinkt wird, auch automatisch libpthread mitgelinkt wird. Spart einiges an verwaltungsaufwand und vereinfacht die CMake files, man hätte es nur vorher wissen müssen ^^
Bitte testen obs geht.

Für die Zukunft: bitte solche Fehler im Build-System Thread beschreiben, auch wenns nur zwei Zeilen sind. Kann durchaus sein, dass ich mal diesen Thread überlese. (mit nem Bugtracker wäre das natürlich nicht passiert ;-) ).
Haters gonna hate, potatoes gonna potate.

Antworten