2010-02-17 6 views
6

Vorrei eseguire l'override delle directory utilizzate da Visual Studio (devenv.exe) per i percorsi del compilatore e della libreria. So come farlo in modo interattivo tramite Strumenti-> Opzioni-> Directory VC++, ma mi piacerebbe automatizzarlo.come utilizzare il file .vsprops per sovrascrivere le directory VC++ in MS Visual Studio

http://msdn.microsoft.com/en-us/library/t9az1d21(VS.80).aspx ha una nota allettante su questo: "Se si desidera impostare percorsi di ricerca di directory (per i propri progetti) che possono essere condivisi da altri utenti o che possono essere applicati su più computer, Visual C++ fornisce un'alternativa all'utilizzo questa finestra di dialogo, tramite le finestre delle proprietà del progetto. Per ulteriori informazioni, vedere Fogli di proprietà (C++). "

Se si segue il collegamento alla documentazione dei fogli di proprietà, sono disponibili numerose informazioni sul meccanismo ma nessuna sulle proprietà effettive che è necessario impostare.

Ho trovato le informazioni popolate dalla finestra di dialogo Directory VC++, in% LocalAppData% \ Microsoft \ VisualStudio \ 8.0 \ VCComponents.dat (per VS 2005 e 9.0 per VS 2008); sembra impostare varie proprietà sotto VC \ VC_OBJECTS_PLATFORM_INFO \ win32 \ Directories e ... \ x64 \ Directory.

Qualcuno ha già fatto questo e sa quale sia la mappatura dai nomi di proprietà usati in VCComponents.dat ai nomi da usare in un file .vsprops?

Mi piacerebbe che funzioni in VS2005, VS2008 e VS2010, idealmente.

In VS2010, Microsoft ha completamente eliminato la finestra di dialogo VC++ Directories in Opzioni di visualizzazione, creata per progetto, quindi ora si ottiene un'interfaccia utente interattiva per modificare queste directory in Proprietà progetto invece di Opzioni vista; questo significa anche che esiste un'interfaccia utente nel gestore proprietà; quindi se si desidera apportare modifiche per macchina anziché per progetto come una volta, basta impostare una finestra delle proprietà come desiderato e far sì che tutti i progetti vengano ereditati da esso. Questo suona come un grande miglioramento rispetto alla vecchia maniera. E un modo diretto per fare ciò che voglio fare. Ma solo in VS2010.

VS2005 e VS2008 non dispongono dell'interfaccia utente per impostare queste proprietà in un progetto o in una finestra delle proprietà; Sono felice di farlo a mano ma non so come dovrebbe essere!

Ecco un vuoto file VS 2005 .vsprops:

<?xml version="1.0"?> 
<VisualStudioPropertySheet 
    ProjectType="Visual C++" 
    Version="8.00" 
    Name="pathSettings" 
    > 
</VisualStudioPropertySheet> 

ho installato VS 2010 e usato la sua ordinata nuova interfaccia grafica di apportare modifiche alle directory di ricerca; sembra che questo:

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <ImportGroup Label="PropertySheets" /> 
    <PropertyGroup> 
    <ExecutablePath>C:\Test;$(PATH)</ExecutablePath> 
    </PropertyGroup> 
</Project> 

Tuttavia, che non funziona testualmente in VS2005 - VS2005 rifiuta di caricarlo (lamentarsi è stata trovata alcuna dichiarazione DTD/schema).

L'ho scaricato nel contenitore, in risposta al quale VS2005 mi dice che "Element 'PropertyGroup" è inatteso in base al modello di contenuto dell'elemento padre' VisualStudioPropertySheet '. Previsto: Tool, UserMacro. " Tool e UserMacro sono le uniche cose mostrate nell'esempio nella pagina MSDN [drat - StackOverflow non mi permetterà come un nuovo utente di inserire qui un collegamento ipertestuale - il primo risultato di ricerca di Google per "strumento di foglio di proprietà usermacro"] - forse quelli sono le uniche cose legali in una scheda di proprietà VS2005?

+0

Altri link: - Proprietà documentazione della scheda: http://msdn.microsoft.com/en-us/library/a4xbdz1e(VS.80).aspx - articolo sui cambiamenti di VS 2010: http://blogs.msdn.com/vsproject/archive/2009/07/07/vc-directories.aspx Quello che non so è cosa inserire in un file .vsprops (VS2005 o 2008) o .props (2010)) per ottenere la stessa funzione ottenuta modificando VCComponents.dat, per impostare o sovrascrivere le directory di ricerca percorso/include/libreria per ogni piattaforma di generazione. – metamatt

+0

Questo sembra utile/rilevante (ancora in fase di elaborazione): http://stackoverflow.com/questions/142708/what-do-delimiter-and-inheritsfrom-tradutes-attributes-mean-in-vsprops-files – metamatt

+0

OK, se solo Tool e UserMacro funziona lì, forse devo trovare il modo giusto per scavalcare il percorso di inclusione del compilatore e il percorso di inclusione del linker usando le direttive di Tool. Questo non aiuterà il percorso dell'eseguibile, però? – metamatt

risposta

8

Prima di tutto, esiste effettivamente una GUI per modificare le finestre delle proprietà allo stesso modo delle proprietà del progetto in tutte le versioni VS di cui si parla.

View->Other Windows->Property Manager 

visualizza una finestra in cui è possibile visualizzare tutte le configurazioni di progetto e la gerarchia dei fogli di proprietà.

Una finestra di proprietà può essere utilizzata per ignorare tutte le proprietà un file vcproj e dispone anche di macro utente. Per sovrascrivere i percorsi di cui si parla, questo è un foglio di proprietà en axample per VS2008 che imposta le directory intermedie, di output, di inclusione e di libreria; metterlo in cima alla gerarchia nella Gestione Propert per assicurarsi che ha effetto:

<?xml version="1.0" encoding="Windows-1252"?> 
<!-- override paths --> 
<VisualStudioPropertySheet 
    ProjectType="Visual C++" 
    Version="8.00" 
    Name="PathSettings" 
    IntermediateDirectory="$(TEMP)\$(ProjectName)_$(ConfigurationName)" 
> 
<Tool 
    Name="VCCLCompilerTool" 
    AdditionalIncludeDirectories="d:\api\include" 
/> 
<Tool 
    Name="VCLibrarianTool" 
    OutputFile="c:\mylibs" 
/> 
<Tool 
    Name="VCLinkerTool" 
    OutputFile="c:\myoutput" 
    AdditionalLibraryDirectories="d:\api\_lib" 
/> 

Questo dovrebbe funzionare per VS2005 pure, ma non per VS2010: come si capito che utilizza un formato diverso, in modo da dovrai tenerli separati separatamente.

+0

Hmm, sembra promettente. Grazie per la risposta, e mi chiedo perché i forum ufficiali della MS non potrebbero dirmi che un anno fa! Mi piacerebbe accettare la tua risposta, ma non sono in una posizione facile per verificarlo in questo momento. Una domanda: questa sembra essere sulla falsariga del mio terzo commento nel post originale (datato 19 febbraio '09 alle 0:21, scusa non riesco a collegarlo) - usando solo Tool - per quanto riguarda l'impostazione dell'eseguibile percorso utilizzato per invocare gli strumenti? È necessario essere in grado di richiamare il compilatore x64 o x86, il linker, ecc. – metamatt

+0

selezionando il compilatore ecc. Non funziona in questo modo. Si seleziona la piattaforma e la configurazione nell'IDE, che quindi seleziona gli strumenti corretti e i fogli delle proprietà impostati per tale configurazione/piattaforma. L'opzione Linker-General-> Advanced-> Target Machine tuttavia deve essere impostata in una finestra delle proprietà quando si utilizza 64 bit. – stijn

+1

OK. Non ho descritto la domanda, ma il motivo per cui lo stavo chiedendo in primo luogo: avevamo un gruppo di sviluppatori che lavoravano su un progetto utilizzando l'IDE VC ma che si basava su un nuovo Platform SDK. Le build ufficiali sono scritte e funzionano bene; gli sviluppatori vogliono costruire usando l'IDE; Volevo un modo 1-stop di configurare l'IDE per puntare su Platform SDK senza che ogni sviluppatore avesse bisogno di farlo manualmente. I fogli di proprietà sembrano la risposta, ma solo se ci consentono di impostare tutte le impostazioni necessarie. Per ora usiamo/useenv, che funziona ma ti costringe a invocare IDE separatamente per x64/x86. – metamatt