2008-12-02 6 views
12

Tôi có một giải pháp của các dự án hỗn hợp VB.NET và C++. Khi sử dụng Visual Studio 2005, bạn có thể thiết lập "Tools-> Option-> Projects and Solutions-> VC++ Directories" để giúp trình biên dịch tìm thấy các tệp bao gồm của bạn. Khi xây dựng cùng một giải pháp với MSBuild tôi không thấy làm thế nào để vượt qua các thiết lập này. C++ sẽ không biên dịch nếu không có đường dẫn cụ thể này. Khi xây dựng hình thức giải pháp này Visual Studio nó xây dựng hoàn hảo.cách thiết lập MSBuild VC++ Directories

Cách để vượt qua đường dẫn này cho MSBUild là gì?

Chỉnh sửa: Có vẻ như MSBuild không chuyển đường dẫn (hoặc chuyển đổi/u) sang vcbuild. Bắt đầu từ VCBuild thay vì thất bại về sự phụ thuộc.

+0

Với Visual 2010, mọi thứ hoạt động như mong đợi vì các thư mục thuộc tính người dùng được sử dụng. Không cần phải sử dụng biến môi trường – CharlesB

+1

Đối với phiên bản mới nhất VS2013, hãy xem câu trả lời của tôi trong chủ đề: http://stackoverflow.com/questions/15654002/adding-additional-library-and-include-paths-when-compiling- từ-command-line/28103688 # 28103688 – zhifac

Trả lời

13

Để đặt thư mục bao gồm, bạn có thể thêm chúng vào biến môi trường INCLUDE của bạn. Bạn sử dụng định dạng giống như trong PATH env. biến - bạn tách đường dẫn bằng dấu chấm phẩy.

Để đặt thư mục thư viện - bạn có thể thực hiện theo cách tương tự, bằng cách đặt chúng vào biến môi trường LIB của bạn.

Để đặt biến môi trường, bạn chỉ cần nhấp chuột phải vào "Máy tính của tôi", chọn "Thuộc tính". Sau đó, bạn chuyển đến tab "Nâng cao" và có nút gọi là "Biến môi trường".

Hoặc, bạn có thể chạy MSBuild từ một kịch bản BATCH, trong trường hợp này, trước khi gọi MSBuild, bạn có thể đặt BAO GỒM NHỮNG SỰ và các biến LIB, như vậy:

set INCLUDE=C:\Libraries\LibA\Include 
set LIB=C:\Libraries\LibA\Lib\x86 
+1

Nếu cách này không hoạt động bình thường, hãy thử sửa lỗi được đề xuất bởi @CharlesB bên dưới. – Tibo

+2

Bạn phải thêm '/ p:" VCBuildAdditionalOptions =/useenv "' vào các đối số MSBuild để các biến INCLUDE và LIB – CharlesB

4

... và bạn cũng có thể thích để thêm% BAO GỒM NHỮNG SỰ% và% LIB% cho các biến của bạn để tránh ghi đè trong số họ

set INCLUDE=C:\Libraries\LibA\Include;%INCLUDE% 
set LIB=C:\Libraries\LibA\Lib\x86;%LIB%