2009-06-25 9 views
11

Próbuję skonfigurować zautomatyzowany system kompilacji w systemie Windows przy użyciu Cygwin. Między innymi musi być w stanie zbudować kilka rozwiązań Visual C++. Mam skrypt, który ustawia zmienne środowiskowe potrzebne do devenv, a jeśli wpiszesz "devenv" w bashu, wywoła IDE Visual Studio. Żadnych problemów do tej pory.Jak zbudować rozwiązanie Visual Studio 9.0 z Cygwin i uzyskać dane wyjściowe kompilacji?

Jestem również w stanie zbudować rozwiązanie z wiersza bash Cygwin poprzez wpisanie

 
$ devenv mysolution.sln /build Debug 

Problemem jest to, że nie pokazuje mi wyjście kompilacji. Właściwie to nawet nie mówi mi, czy kompilacja się udała. Polecenie po prostu się kończy, a ja otrzymuję wezwanie. Następnie mogę przejść do katalogu wyjściowego i sprawdzić, czy plik wykonywalny został utworzony, ale dla systemu kompilacji chcę mieć możliwość sprawdzenia błędów.

Co robię źle? Widzę dane wyjściowe debugowania, gdy uruchamiam devenv w powłoce systemu Windows, ale nie w cygwin. Gdzie jest wysyłany i jak mogę go odzyskać?

Odpowiedz

11

Czy cygwin znajdzie i uruchomi pliki .com?

Istnieją 2 devenv wykonywalne, jeden jest devenv.com który jest aplikacją, która obsługuje tryb konsoli stdin, stdout i stderr proxy dla innego pliku wykonywalnego, devenv.exe, który jest aplikacją trybu GUI. Jeśli ładowanie cygwin jest devenv.exe, wtedy nie będzie żadnych rzeczy stdin/stdout. Jeśli ładowane jest devenv.com, powinno uruchomić się devenv.exe podczas pośredniczenia w wysyłaniu podstawowych informacji do konsoli.

Może, jeśli wyraźnie określono, że należy uruchomić devenv.com?

+0

To wszystko! Dzięki! – Dima

2

Znalazłem obejście.

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

zrzuci wyjście wbudowane w mylog.txt, która jest jeszcze bardziej wygodne dla zautomatyzowanego buduje. Wciąż jestem ciekawy, dlaczego dane wyjściowe nie pojawiają się na ekranie.

3

Czy rozważałeś użycie MSBuild? Możesz użyć msbuild do budowania rozwiązań VS bez żadnych modyfikacji i wypluwa wyjście poza standardowe wyjście. Polecenie będzie wyglądać następująco:

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

MSBuild jest narzędziem, które MS zaprojektowany do zautomatyzowanego buduje, więc może dopasować swój problem trochę lepiej niż uruchamianie devenv.exe.

+0

To prawdopodobnie nie zrobi wszystkiego, czego potrzebuję. Oprócz rozwiązań VS muszę też budować projekty dla platformy wbudowanej, które nie używają VS. W tym momencie wszystko, czego potrzebuję, to móc zbudować wszystkie konfiguracje i otrzymać e-mail, jeśli coś jest zepsute. Wygląda więc na to, że MSBuild jest jednocześnie zbyt potężny i mało elastyczny na to, czego potrzebuję. – Dima

+0

MSBuild jest niezwykle wydajny i elastyczny. Jeśli nie zrobi tego po wyjęciu z pudełka, istnieją zadania społecznościowe, takie jak http://sdctasks.codeplex.com/ i http://msbuildtasks.tigris.org/, które dodają dodatkowe funkcje, lub zawsze możesz napisać własne zadanie. I nawet jeśli nie użyjesz go do całego procesu kompilacji, jest to przynajmniej przydatne dla części, które są kompilowane przez produkty MS. – heavyd

1

Ostatni raz usłyszałem, msbuild w porównaniu z 2008 nie mógł obsłużyć projektów w C++. Myślę, że może w porównaniu z rokiem 2010.

Powiązane problemy