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 ++.
źródło
Odpowiedzi:
Jedną rzeczą, którą możesz zrobić, to umieścić go w pliku rekwizytów i odziedziczyć po nim indywidualne projekty. Pod
ItemDefinitionGroup
wewnątrzClCompile
trzeba było<MultiProcessorCompilation>true</MultiProcessorCompilation>
.źródło