2009-06-25 28 views
11

Tôi đang cố gắng thiết lập hệ thống xây dựng tự động trên Windows bằng Cygwin. Trong số những thứ khác, nó cần để có thể xây dựng một số giải pháp Visual C++. Tôi có một kịch bản mà thiết lập các biến môi trường cần thiết cho devenv, và nếu tôi gõ 'devenv' trong bash nó sẽ trả về Visual Studio IDE. Không có vấn đề cho đến nay.Làm thế nào để xây dựng một giải pháp Visual Studio 9.0 từ Cygwin và nhận được đầu ra xây dựng?

Tôi cũng có thể xây dựng một giải pháp từ dấu nhắc bash Cygwin bằng cách gõ

 
$ devenv mysolution.sln /build Debug 

Vấn đề là nó không được hiển thị cho tôi xây dựng đầu ra. Trong thực tế, nó thậm chí không cho tôi biết có hay không việc xây dựng đã thành công. Lệnh đơn giản là kết thúc, và tôi lấy lại dấu nhắc. Sau đó, tôi có thể đi vào thư mục đầu ra, và kiểm tra xem tập tin thực thi có được tạo hay không, nhưng đối với một hệ thống xây dựng, tôi muốn có khả năng grep cho các lỗi.

Tôi đang làm gì sai? Tôi có thể thấy đầu ra gỡ lỗi khi tôi chạy devenv trong cửa sổ trình bao, nhưng không phải trong Cygwin. Nó được gửi ở đâu và làm thế nào để lấy lại?

Trả lời

11

Cygwin có thể tìm và chạy các tệp .com không?

Có 2 devenv tệp thực thi, một là devenv.com là ứng dụng chế độ bảng điều khiển xử lý proxy chuẩn, stdout và stderr cho thực thi khác, devenv.exe, là ứng dụng chế độ GUI. Nếu devenv.exe là những gì Cygwin đang tải thì sẽ không có công cụ stdin/stdout. Nếu devenv.com đang được tải, nó sẽ khởi chạy devenv.exe trong khi ủy quyền các công cụ chuẩn cho bảng điều khiển.

Có thể nếu bạn chỉ định rõ ràng rằng devenv.com nên được chạy?

+0

Đúng vậy! Cảm ơn! – Dima

2

Tôi đã tìm thấy giải pháp thay thế.

 
devenv mysolution.sln /build Debug /out mylog.txt 

sẽ đổ kết xuất xây dựng vào mylog.txt, thậm chí còn thuận tiện hơn cho việc xây dựng tự động. Tôi vẫn còn tò mò tại sao đầu ra không hiển thị trên màn hình, mặc dù.

3

Bạn đã cân nhắc sử dụng MSBuild? Bạn có thể sử dụng msbuild để xây dựng các giải pháp VS mà không có bất kỳ sửa đổi nào và nó thoát ra khỏi thiết bị xuất chuẩn. Lệnh sẽ giống như thế:

msbuild mysolution.sln /t:Build /p:"Configuration=Debug" /p:"Platform=Win32" 

MSBuild là công cụ mà MS được thiết kế để làm tự động xây dựng, vì vậy nó có thể phù hợp với vấn đề của bạn một chút tốt hơn so với chạy devenv.exe.

+0

Điều đó có lẽ sẽ không làm mọi thứ tôi cần. Ngoài các giải pháp VS tôi phải xây dựng các dự án cho một nền tảng nhúng, mà không sử dụng VS. Tại thời điểm này tất cả tôi cần là để có thể xây dựng tất cả các cấu hình và nhận được một email nếu bất cứ điều gì bị hỏng. Vì vậy, có vẻ như MSBuild là cùng một lúc quá mạnh mẽ và không đủ linh hoạt cho những gì tôi cần. – Dima

+0

MSBuild vừa mạnh mẽ vừa linh hoạt. Nếu nó không làm điều đó ra khỏi hộp, có các nhiệm vụ cộng đồng như http://sdctasks.codeplex.com/ và http://msbuildtasks.tigris.org/ thêm chức năng bổ sung hoặc bạn luôn có thể viết nhiệm vụ riêng. Và ngay cả khi bạn không sử dụng nó cho toàn bộ quá trình xây dựng của bạn, nó là ít nhất hữu ích cho các bộ phận được biên soạn bởi các sản phẩm MS. – heavyd

1

cuối cùng tôi đã nghe, msbuild in vs 2008 không thể xử lý các dự án C++. Tôi nghĩ rằng nó có thể so với năm 2010.

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