2012-10-20 19 views
16

Ho avviato il mio primo progetto più grande con Visual Studio 2012 in C++. Strutturerò i miei file di origine in cartelle, ma non riesco a trovare dove posso creare cartelle reali, come in Windows Explorer. Quindi questa è la mia domanda.Come creare una cartella in Visual Studio C++ 2012

Come posso creare cartelle reali nel mio progetto?

+0

È possibile fare clic con il tasto destro del mouse sul progetto per avere l'opzione di aprire la cartella, se è una consolazione. – chris

risposta

20

L'IDE ha un comando per questo, "Nuova cartella". È anche presente nel menu contestuale Progetto + Aggiungi, che puoi vedere quando guardi il menu di scelta rapida con Strumenti + Personalizza. È tuttavia nascosto nell'IDE C++. Intenzionalmente.

È importante capire perché è nascosto. Ti tiene lontano dai guai, il tipo di problemi in cui ti troverai quando crei le cartelle con Explorer.

Il problema è il modo in cui i file C++ vengono creati. Producono un file .obj quando il compilatore ha finito con loro. Quel file obj è memorizzato in una directory il cui nome è un'impostazione di progetto. Lo vedi con le proprietà di Project + Properties, General, Intermediate Directory. Per un singolo file .cpp, è C/C++, File di output, Nome file oggetto. L'impostazione predefinita per quello è $(IntDir) una macro che indica al compilatore di utilizzare l'impostazione Directory intermedia. Con le impostazioni predefinite, tutti i file .obj per il build Debug finiscono nella sottodirectory Debug. Rilascia la sottodirectory per la build di rilascio. Indipendentemente da dove è stato memorizzato .cpp.

Forse vedi la trappola per orsi ormai. Se crei una sottodirectory con i file .cpp, avrai dei problemi quando quella sottodirectory ha un file .cpp il cui nome è identico a un altro file .cpp in un'altra sottodirectory. Producono un file .obj con lo stesso nome. Uno sovrascrive l'altro, che mai uno è stato compilato per ultimo. Ciò produce molto errori di linker mistificante. Otterrai errori di simboli duplicati perché l'ultimo file .obj creato viene collegato due volte e gli errori di simbolo mancanti per il file obj sovrascritto.

Quindi andare avanti e creare una sottodirectory ma attenzione a questo problema. È necessario modificare l'impostazione Nome file oggetto per il file .cpp in caso di collisione.

+2

Grazie, per la tua descrizione dettagliata ma in questo momento sto disinstallando VS2012 e scarica di nuovo il Qt-Creator, un meraviglioso IDE dai programmatori per i programmatori. Non è necessario installare migliaia di componenti aggiuntivi per le funzioni standard minime. – Number42

+5

È divertente che una limitazione facile da risolvere delle impostazioni di generazione predefinite venga mascherata nascondendo la funzione esatta che potrebbe esporre il difetto ... – rubenvb

+3

-1 Non funziona (per me). Sono d'accordo con @rubenvb, è divertente (in modo tragico) che quella funzione sia nascosta, per mascherare un "problema" facile da risolvere. Sia che sia, non c'è apparentemente alcun modo per attivare (qualunque sia la parola) quella voce di menu. Provai. Allora, qual è l'incantesimo magico? –

1

Questo è leggermente fastidioso, però, ecco cosa si può fare:

creare la nuova cartella in Visual Studio. Questo non crea una nuova cartella nel file system. Aggiungi un nuovo elemento alla cartella. Scegli la directory corretta per l'articolo.

Ad esempio, se il progetto è in% Documents% \ Project e il nuovo nome della cartella è Cartella, aggiungere un nuovo elemento a tale cartella in% Documents% \ Project \ Folder.

Visual Studio 2012 inserisce l'elemento nella cartella in cui si desidera. Se aggiungi un nuovo elemento, verrà impostato automaticamente sulla stessa cartella. È qui che arriva la parte fastidiosa. Se crei 3 cartelle per tutti gli elementi del tuo progetto e provi ad aggiungere un nuovo elemento a ciascuna cartella, Visual Studio proverà a mettere tutti e 3 gli elementi nello stesso posto nel file system (l'ultimo cartella in cui hai aggiunto un nuovo oggetto), mentre inserisci gli elementi nella cartella di Visual Studio corretta.

È possibile che ci sia un'impostazione per questo in Visual Studio. Non l'ho trovato Anche io non ho guardato così duramente.

Problemi correlati