2010-02-17 4 views
6

Chciałbym zastąpić katalogi używane przez Visual Studio (devenv.exe) dla ścieżek kompilatora i biblioteki. Wiem, jak to zrobić interaktywnie za pośrednictwem menu Narzędzia-> Opcje-> Katalogi VC++, ale chciałbym to zautomatyzować.jak używać pliku .vsprops do przesłonięcia katalogów VC++ w MS Visual Studio

http://msdn.microsoft.com/en-us/library/t9az1d21(VS.80).aspx ma zwodniczą notatkę: "Jeśli chcesz ustawić ścieżki wyszukiwania katalogu (dla twoich projektów), które mogą być współużytkowane przez innych użytkowników lub które mogą być stosowane na wielu komputerach, Visual C++ stanowi alternatywę dla używania to okno dialogowe, poprzez arkusze właściwości projektu. Aby uzyskać więcej informacji, zobacz Arkusze właściwości (C++). "

Po kliknięciu odsyłacza do dokumentacji Arkuszy Właściwości istnieje informacja o mechanizmie, ale nie ma informacji o właściwościach, które należy ustawić.

Znalazłem informacje w oknie dialogowym Katalogi VC++, w% LocalAppData% \ Microsoft \ VisualStudio \ 8.0 \ VCComponents.dat (dla VS 2005 i 9.0 dla VS 2008); wydaje się ustawić różne właściwości w VC \ VC_OBJECTS_PLATFORM_INFO \ win32 \ Directories i ... \ x64 \ Directories.

Czy ktoś to zrobił wcześniej i wie, jakie jest odwzorowanie od nazw właściwości używanych w VCComponents.dat do nazw używanych w pliku .vsprops?

Chciałbym, aby to działało w VS2005, VS2008 i VS2010, idealnie.

W VS2010 firma Microsoft całkowicie usunęła okno dialogowe Katalogi VC++ w obszarze Opcje widoku, wykonała je dla każdego projektu, a teraz otrzymujesz interaktywny interfejs użytkownika do edycji tych katalogów w Właściwości projektu zamiast opcji Wyświetl; oznacza to również, że w menedżerze właściwości istnieje interfejs użytkownika; jeśli chcesz wprowadzić zmiany na maszynę zamiast na projekt podobny do tego, jaki był, po prostu ustaw arkusz właściwości tak, jak chcesz, i spraw, aby wszystkie twoje projekty dziedziczyły po nim. To brzmi jak wielka poprawa na starym sposobie. I bezpośredni sposób robienia tego, co chcę robić. Ale tylko w VS2010.

VS2005 i VS2008 nie mają interfejsu użytkownika do ustawiania tych właściwości w projekcie lub arkuszu właściwości; Cieszę się, że robię to ręcznie, ale nie wiem, jak ma wyglądać!

Oto pusty plik VS 2005 .vsprops:

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

I zainstalowane VS 2010 i wykorzystał schludny nowy GUI, aby dokonać zmian w katalogach wyszukiwarek; wygląda to tak:

<?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> 

jednak, że nie działa dosłownie w VS2005 - VS2005 odmawia go załadować (nie skarży deklaracja DTD/schemat został znaleziony).

Wrzuciłem to do pojemnika, w odpowiedzi na które VS2005 mówi mi "Element" PropertyGroup "jest nieoczekiwany zgodnie z modelem zawartości elementu macierzystego" VisualStudioPropertySheet ".Oczekiwanie: Tool, UserMacro." Narzędzie i UserMacro to jedyne rzeczy pokazane w przykładzie na stronie MSDN [drat - StackOverflow nie pozwoli mi, jako nowy użytkownik umieścił tutaj hiperlink - pierwsze wyniki wyszukiwania Google dla "narzędzia arkuszy własności usermacro"] - może te są jedyne rzeczy prawne w arkuszu właściwości VS2005?

+0

Więcej linków: - Dokumentacja arkusz własności: http://msdn.microsoft.com/en-us/library/a4xbdz1e(VS.80).aspx - artykuł na temat zmian w VS 2010: http://blogs.msdn.com/vsproject/archive/2009/07/07/vc-directories.aspx Nie wiem, co umieścić w pliku .vsprops (VS2005 lub 2008) lub pliku .props (2010) w celu osiągnięcia tego samego, co można osiągnąć poprzez edycję pliku VCComponents.dat, aby ustawić lub przesłonić katalogi wyszukiwania ścieżek/uwzględnienia/bibliotek dla każdej platformy kompilacji. – metamatt

+0

Wydaje się to pomocne/istotne (nadal przetwarzane): http://stackoverflow.com/questions/142708/what-do-delimiter-and-inheritsfromparent-attributes-mean-in-vsprops-files – metamatt

+0

OK, jeśli tylko narzędzie i UserMacro tam pracuje, może muszę znaleźć właściwy sposób na przesłonięcie ścieżki dołączania kompilatora i ścieżki dołączania linku przy użyciu dyrektyw narzędziowych. To jednak nie pomoże w przypadku ścieżki wykonywalnej, prawda? – metamatt

Odpowiedz

8

Przede wszystkim istnieje gui do edycji arkuszy właściwości w taki sam sposób, jak właściwości projektu we wszystkich wersjach VS, o których mówisz.

View->Other Windows->Property Manager 

wyświetla okno, w którym można zobaczyć wszystkie konfiguracje projektu i hierarchię arkuszy właściwości.

Arkusz właściwości może służyć do zastępowania wszystkich własności plików vcproj oraz makr użytkownika. Aby przesłonić ścieżki, o których mówisz, jest to arkusz właściwości axample dla VS2008, który ustawia katalogi pośrednie, wyjściowe, include i biblioteki; umieścić go na szczycie hierarchii w Menedżerze propert aby upewnić się, że nie będzie skuteczne:

<?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" 
/> 

To powinno działać dla VS2005, jak również, ale nie dla VS2010: jak zorientowali się, że używa innego formatu, tak będziesz musiał zachować dwie z nich oddzielnie.

+0

Hmm, wygląda obiecująco. Dzięki za odpowiedź i zastanawiam się, dlaczego oficjalne fora MS nie mogły mi powiedzieć, że rok temu! Chciałbym zaakceptować twoją odpowiedź, ale nie jestem w stanie jej łatwo zweryfikować. Jedno pytanie: to wygląda na mój trzeci komentarz w oryginalnym wpisie (z dnia 19 lutego 10 na 0:21, przepraszam, nie mogę do niego linkować) - używając tylko narzędzia - co z ustawianiem pliku wykonywalnego ścieżka używana do wywoływania narzędzi? Musisz mieć możliwość wywołania kompilatora x64 lub x86, linkera itp. – metamatt

+0

Wybór kompilatora itp. Nie działa w ten sposób. Użytkownik wybiera platformę i konfigurację w IDE, która następnie wybiera odpowiednie narzędzia i arkusze właściwości ustawione dla tej konfiguracji/platformy. Dostępna jest opcja Linker-General-> Advanced-> Target Machine, która powinna być ustawiona w arkuszu właściwości, gdy używana jest 64-bitowa. – stijn

+1

OK. Nie opisałem tego w pytaniu, ale powód, dla którego pytałem w pierwszej kolejności: mieliśmy grupę programistów pracujących nad projektem wykorzystującym IDE VC, ale budując go na nowszym pakiecie SDK platformy. Oficjalne kompilacje są pisane i działają dobrze; programiści chcą budować za pomocą IDE; Chciałem 1-stopniowy sposób konfigurowania IDE, aby wskazywał na platformę SDK, bez konieczności ręcznego wykonywania przez każdego programistę. Arkusze właściwości wydają się być odpowiedzią, ale tylko wtedy, gdy pozwalają nam ustawić wszystkie niezbędne ustawienia. Na razie używamy/useenv, który działa, ale zmusza cię do wywołania IDE oddzielnie dla x64/x86. – metamatt

Powiązane problemy