File di origine condiviso tra due parti del progetto [chiuso]

1

Ho il seguente tipo di struttura di directory:

part1
    build
    src
part2
    build
    src

Ora ho un file di intestazione che vorrei includere in entrambe le parti di questi progetti, conterrà costanti e alcune definizioni di macro e alcune funzioni di utilità, e voglio che queste siano sincronizzate tra le due parti. Quale sarebbe il modo generalmente accettabile per formattare la mia struttura di directory?

Qualcosa del genere?

part1
    build
    src
part2
    build
    src
share
    src

e configura i miei file make nelle directory build per cercare anche in ../../share/src

O c'è un modo più "corretto" per farlo?

    
posta csteifel 27.02.2014 - 23:01
fonte

2 risposte

2

È così che l'ho fatto in molti progetti.
Oserei dire "auto-documentare"?

Rende perfettamente chiaro a chiunque guardando ciò che sta succedendo.

E questo include tu .
Immagina di andare a lavorare su un altro progetto completamente indipendente per tre / quattro anni e poi tornare a questo. Tutti quei piccoli frammenti e supposizioni e "intese" con cui lavori giorno dopo giorno, oggi verranno dimenticati da tempo. sarà come arrivare a questo codice completamente freddo. Non è bello trovare dei "nasties" nascosti nel codice, vero? Così; prova a non lasciarne nessuno

    
risposta data 28.02.2014 - 13:55
fonte
2

Non penso che ci sia davvero un approccio intrinsecamente migliore. Ho visto alcuni approcci alla situazione e il meglio che posso fare è condividere quello che sono:

Cartella di inclusione condivisa

In questo caso hai una cartella globale "Include" che definisce costanti e tipi e funzioni potenzialmente esterne che potrebbero essere esposte ad altre applicazioni. La struttura sarebbe simile a questa:

Solution
  project1 (library)
    build
    src
    include
  project2 (executable)
    build
    src
  include

I file make aggiungerebbero l'inclusione globale e la libreria include (se necessario) come include le directory in modo che il compilatore possa trovarli esattamente come faresti per qualsiasi libreria. NOTA: il riferimento al file effettivo sarebbe #include "filename.h" . I progetti Automake con i sottoprogetti utilizzano essenzialmente questo approccio.

Progetto condiviso

Questo è lo schema che hai suggerito nella tua domanda. In sostanza hai l'equivalente di un progetto per i file di intestazione condivisi. L'unica modifica suggerita che farei alla tua soluzione sarebbe il modo in cui fai riferimento ai file di inclusione. Invece di #include "..\..\shared\src\xyz.h" preferirei vedere il percorso di inclusione appropriato passato al compilatore. Visual Studio rende tutto ciò abbastanza semplice, fornendo un elenco di tutti i percorsi di inclusione nel file di progetto. Se crei i tuoi file Make o usi uno strumento per generarli, la chiamata al compilatore richiederà i parametri appropriati (comunemente -I o /I seguito dal percorso).

Sono fondamentalmente uguali

A questo punto è davvero una questione di preferenza, e quale IDE ha il miglior supporto da gestire. Ho visto i file comuni appena lasciati nella directory radice della soluzione, ma quell'approccio è un po 'troppo ambiguo dal momento che non hai alcun contesto per questi file. La linea di fondo è che stai pensando sulla strada giusta.

    
risposta data 28.02.2014 - 18:33
fonte

Leggi altre domande sui tag