2010-02-17 56 views
6

Tôi muốn ghi đè các thư mục được Visual Studio (devenv.exe) sử dụng cho đường dẫn trình biên dịch và thư viện. Tôi biết làm thế nào để làm điều này tương tác thông qua Tools-> Options-> VC++ Thư mục, nhưng tôi muốn tự động hóa điều này.cách sử dụng tệp .vsprops để ghi đè thư mục VC++ trong MS Visual Studio

http://msdn.microsoft.com/en-us/library/t9az1d21(VS.80).aspx có một lưu ý tantalizing về điều này: "Nếu bạn muốn thiết lập đường dẫn tìm kiếm thư mục (cho dự án của bạn) có thể được chia sẻ bởi người dùng khác hoặc có thể được áp dụng trên nhiều máy tính, Visual C++ cung cấp một thay thế cho việc sử dụng hộp thoại này, thông qua các trang thuộc tính của dự án Để biết thêm thông tin, hãy xem Bảng tính chất (C++). "

Nếu bạn theo liên kết đến tài liệu Trang tính thuộc tính, có một loạt thông tin về cơ chế nhưng không có thông tin nào về thuộc tính thực tế bạn cần đặt.

Tôi tìm thấy thông tin được điền bởi hộp thoại VC++ Directories, trong% LocalAppData% \ Microsoft \ VisualStudio \ 8.0 \ VCComponents.dat (cho VS 2005 và 9.0 cho VS 2008); nó dường như thiết lập các thuộc tính khác nhau trong VC \ VC_OBJECTS_PLATFORM_INFO \ win32 \ Directories và ... \ x64 \ Directories.

Có ai đã làm điều này trước đây và biết ánh xạ là từ tên thuộc tính được sử dụng trong VCComponents.dat đến tên để sử dụng trong tệp .vsprops không?

Tôi muốn điều này hoạt động trong VS2005, VS2008 và VS2010, lý tưởng.

Trong VS2010, Microsoft đã hoàn toàn thực hiện với hộp thoại VC++ Directories bên dưới Tùy chọn xem, thực hiện theo dự án và bây giờ bạn có giao diện người dùng tương tác để chỉnh sửa các thư mục này trong thuộc tính dự án thay vì tùy chọn xem; điều này cũng có nghĩa là có một giao diện người dùng cho nó trong trình quản lý thuộc tính; sau đó nếu bạn muốn thay đổi mỗi máy thay vì mỗi dự án như trước đây, bạn chỉ cần đặt một bảng thuộc tính theo cách bạn muốn và làm cho tất cả các dự án của bạn kế thừa từ nó. Điều này nghe có vẻ như một cải tiến lớn so với cách cũ. Và một cách trực tiếp để làm những gì tôi muốn làm. Nhưng chỉ trong VS2010.

VS2005 và VS2008 không có giao diện người dùng để đặt các thuộc tính này trong bảng dự án hoặc thuộc tính, mặc dù; Tôi rất vui khi làm điều đó bằng tay nhưng tôi không biết nó trông như thế nào!

Dưới đây là một VS trống 2005 .vsprops file:

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

Tôi đã cài đặt VS 2010 và sử dụng giao diện mới gọn gàng của mình để thực hiện thay đổi trong thư mục tìm kiếm; có vẻ như sau:

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

Tuy nhiên, điều đó không làm việc đúng nguyên văn trong VS2005 - VS2005 từ chối tải (không khiếu nại DTD/lược đồ).

Tôi plunked rằng vào container, để đáp ứng mà VS2005 nói với tôi "Element 'PropertyGroup' là bất ngờ theo mô hình nội dung của phần tử cha 'VisualStudioPropertySheet'. Mong đợi: Công cụ, UserMacro." Công cụ và UserMacro là những điều duy nhất được hiển thị trong ví dụ trong trang MSDN [drat - StackOverflow sẽ không cho phép tôi làm người dùng mới đặt liên kết ở đây - kết quả tìm kiếm đầu tiên của Google cho 'công cụ trang thuộc tính usermacro'] - có thể là những điều duy nhất hợp pháp trong một tài sản VS2005?

+0

Thêm liên kết: - Sở hữu tài liệu tấm: http://msdn.microsoft.com/en-us/library/a4xbdz1e(VS.80).aspx - bài viết về những thay đổi trong VS 2010: http://blogs.msdn.com/vsproject/archive/2009/07/07/vc-directories.aspx Những gì tôi không biết là đưa vào tệp .vsprops (VS2005 hoặc 2008) hoặc tệp .props (2010)) để thực hiện cùng một điều mà bạn thực hiện bằng cách chỉnh sửa VCComponents.dat, để thiết lập hoặc ghi đè thư mục tìm kiếm đường dẫn/bao gồm/thư viện cho mỗi nền tảng xây dựng. – metamatt

+0

Điều này có vẻ hữu ích/có liên quan (vẫn đang xử lý): http://stackoverflow.com/questions/142708/what-do-delimiter-and-inheritsfromparent-attributes-mean-in-vsprops-files – metamatt

+0

OK, nếu chỉ Công cụ và UserMacro làm việc ở đó, có lẽ tôi phải tìm đúng cách để ghi đè đường dẫn include của trình biên dịch và đường dẫn bao gồm của trình liên kết bằng cách sử dụng các chỉ thị Công cụ. Tuy nhiên, điều đó sẽ không giúp ích gì cho con đường thực thi được? – metamatt

Trả lời

8

Trước hết, thực sự có một gui để chỉnh sửa trang thuộc tính giống như cách thuộc tính dự án trong tất cả các phiên bản VS mà bạn nói đến.

View->Other Windows->Property Manager 

sẽ trả về một cửa sổ để bạn có thể xem tất cả cấu hình dự án và phân cấp trang thuộc tính.

Bảng thuộc tính có thể được sử dụng để ghi đè tất cả thuộc tính tệp vcproj có và cũng có Macro người dùng. Để ghi đè đường dẫn bạn nói, đây là trang thuộc tính en axample cho VS2008 để đặt thư mục trung gian, đầu ra, bao gồm và thư viện; đặt nó ở phía trên cùng của hệ thống phân cấp trong quản lý Thuộc tính để chắc chắn rằng nó có hiệu lực:

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

này nên làm việc cho VS2005 là tốt, nhưng không phải cho VS2010: khi bạn tìm ra nó sử dụng một định dạng khác nhau, do bạn sẽ phải giữ hai người họ một cách riêng biệt.

+0

Hmm, có vẻ đầy hứa hẹn. Cảm ơn câu trả lời, và tôi tự hỏi tại sao diễn đàn chính thức của MS không thể nói với tôi rằng một năm trước! Tôi rất muốn chấp nhận câu trả lời của bạn, nhưng tôi không ở một vị trí dễ dàng để xác minh nó ngay bây giờ. Một câu hỏi: điều này có vẻ là dọc theo dòng của bình luận thứ 3 của tôi trong bài đăng gốc (ngày 19 tháng 2 '10 lúc 0:21, xin lỗi tôi không thể liên kết với nó) - chỉ sử dụng Công cụ - những gì về thiết lập thực thi đường dẫn được sử dụng để gọi các công cụ? Cần để có thể gọi trình biên dịch x64 hoặc x86, trình liên kết, v.v. – metamatt

+0

chọn trình biên dịch v.v. không hoạt động theo cách đó. Bạn chọn nền tảng và cấu hình trong IDE, sau đó chọn đúng công cụ và các trang thuộc tính được đặt cho cấu hình/nền tảng đó. Bạn có tùy chọn Linker-General-> Advanced-> Target Machine mặc dù nó nên được đặt trong một trang thuộc tính khi sử dụng 64 bit. – stijn

+1

OK. Tôi đã không mô tả trong câu hỏi nhưng lý do tôi đã hỏi ở nơi đầu tiên: chúng tôi đã có một loạt các nhà phát triển làm việc trên một dự án bằng cách sử dụng IDE VC nhưng xây dựng dựa trên một Platform Platform mới hơn. Các bản dựng chính thức được viết và hoạt động tốt; các nhà phát triển muốn xây dựng bằng cách sử dụng IDE; Tôi muốn có một cách 1-stop của cấu hình IDE để trỏ tại Platform SDK mà không cần mỗi nhà phát triển cần phải làm điều này bằng tay. Các trang thuộc tính có vẻ giống như câu trả lời, nhưng chỉ khi chúng cho phép chúng tôi thiết lập tất cả các cài đặt cần thiết. Bây giờ chúng ta sử dụng/useenv, hoạt động nhưng buộc bạn phải gọi IDE riêng cho x64/x86. – metamatt

Các vấn đề liên quan