Jak używać MSBuild.rsp lub w inny sposób określić domyślne przełączniki wiersza polecenia programu Visual Studio MSBuild.exe

0

Chciałbym, aby MSBuild.exe zawsze używał opcji / MP , aby projekty były zawsze budowane z wieloma rdzeniami. Próbowałem dodać / MP do ostatniego wiersza pliku MSBuild.rsp (w tym samym katalogu, co plik wykonywalny MSBuild.exe). Jednak opcja / MP nie jest używana. Jak mogę przekonać Visual Studio, aby zawsze używało opcji / MP?

MSBuild.rsp opisuje zachowanie chcę użyć, ale nie były w stanie zmusić go do pracy:

Plik automatycznej odpowiedzi to specjalny plik .rsp, którego MSBuild.exe automatycznie używa podczas tworzenia projektu. Ten plik, MSBuild.rsp, musi znajdować się w tym samym katalogu co MSBuild.exe, w przeciwnym razie nie zostanie znaleziony. Możesz edytować ten plik, aby określić domyślne przełączniki wiersza polecenia na MSBuild.exe. Na przykład, jeśli używasz tego samego programu rejestrującego za każdym razem, gdy budujesz projekt, możesz dodać przełącznik / logger do pliku MSBuild.rsp, a MSBuild.exe będzie używać programu rejestrującego za każdym razem, gdy projekt jest budowany.

Uruchomiłem ponownie komputer, aby sprawdzić, czy MSBuild.exe nie korzystał z poprzedniej wersji MSBuild.rsp.

Potwierdziłem, że modyfikuję plik MSBuild.rsp w tym samym katalogu, co plik MSBuild.exe, zaznaczając „Otwórz lokalizację pliku” w menedżerze zadań Windows. Opcja MP konfiguracji projektu jest pusta (nie jest wyraźnie wyłączona).

Potwierdziłem, że opcja / MP w MSBuild.rsp nie była używana, wykonując przebudowę „Tylko projekt” i licząc tylko jedno wystąpienie cl.exe w Menedżerze zadań Windows (jeśli wykonam tę samą odbudowę z ręcznie ustawioną opcją / MP istnieje ponad 10 wystąpień cl.exe).

Próbowałem również dodać garść śmieci do MSBuild.rsp, a Visual Studio nie zgłosiło żadnego błędu ani ostrzeżenia, co prowadzi mnie do wniosku, że plik MSBuild.rsp w ogóle nie jest używany.

Próbowałem włączyć diagnostyczne rejestrowanie danych wyjściowych dla MSBuild i pokazuje opcję / MP (jako argument dla Tracker.exe), kiedy wyraźnie włączam ją w ustawieniach konfiguracji mojego projektu, ale jeśli pozostawię opcję MP pustą w konfiguracji mojego projektu i po prostu dołączę w MSBuild.rsp opcja / MP nie jest zawarta w tym wyjściu. Nie wiem, co to jest Tracker.exe (spodziewałem się zobaczyć MSBuild.exe na swoim miejscu). Próbowałem również dodać plik Tracker.rsp z / MP w tym samym katalogu, co Tracker.exe, i to też nie pomogło (próbowałem również dodać MSBuild.rsp do mojego katalogu Tracker.exe i to również nie miało wpływu).

Aby zobaczyć, czy plik rsp może kiedykolwiek działać, jawnie dodałem plik rsp z opcją @ dodaną do ustawień konfiguracyjnych mojego projektu i pokazuje się jako ładowanie opcji / MP w wynikach kompilacji diagnostycznej, ale nie ma to wpływu . Opcja / MP jest dołączana później jako argument do cl.exe, a nie jako argument do Tracker.exe, jak to miało miejsce, gdy opcja MP została określona w konfiguracji projektu. Myślę, że opcja powinna być do MSBuild (lub Tracker.exe, jak sądzę), a nie cl.exe.

Używam Visual Studio 2010 z większością projektów w C ++.

JDiMatteo
źródło
Chcę zmodyfikować domyślne przełączniki, aby nie musiałem bezpośrednio zmieniać konfiguracji projektu, ponieważ (1) w moim rozwiązaniu jest kilkadziesiąt projektów i (2) konfiguracja projektu jest kontrolowana pod kątem wersji i nie chcę sprawdzać w tych zmianach w tej chwili.
JDiMatteo,

Odpowiedzi:

1

Jedną rzeczą, którą możesz zrobić, to umieścić go w pliku rekwizytów i odziedziczyć po nim indywidualne projekty. Pod ItemDefinitionGroupwewnątrz ClCompiletrzeba było <MultiProcessorCompilation>true</MultiProcessorCompilation>.

Jay Carlton
źródło
Dzięki Jay, to zadziałało, a moja wiara w Microsoft i Visual Studio została przywrócona! Zamiast dodawać plik props, dodałem <ClCompile> <MultiProcessorCompilation> true </MultiProcessorCompilation> </ClCompile> na dole <ItemDefinitionGroup> w C: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4. 0 \ Microsoft.Cpp.Default.props, aby ustawienie było domyślne dla wszystkich moich projektów.
JDiMatteo
Cieszę się, że to pomaga. Chciałbym tylko upewnić się, że ktokolwiek, z kim współpracujesz, wie o tym, abyś nie miał rozbieżnych właściwości w swoim zespole. Jeśli chcesz to sprawdzić w celu kontroli źródła, możesz utworzyć dowiązanie symboliczne (przez mklink) w plikach programu, aby wskazać własną kopię domyślnego pliku props w wygodniejszym miejscu (np. Gdziekolwiek sprawdzasz swoje projekty) . Wtedy zawsze masz najnowszą kopię i nie musisz pamiętać, aby zmienić plik w folderze MSFT.
Jay Carlton