2008-12-02 10 views
12

Mam rozwiązanie mieszanych projektów VB.NET i C++. Podczas korzystania z Visual Studio 2005 można ustawić "Narzędzia-> Opcje-> Projekty i Rozwiązania-> Katalogi VC++", aby pomóc kompilatorowi znaleźć pliki włączeń. Podczas budowania tego samego rozwiązania z MSBuild nie widzę sposobu przekazywania tych ustawień. C++ nie będzie kompilować bez określonej ścieżki. Podczas budowania tego rozwiązania z Visual Studio doskonale się komponuje.jak ustawić katalogi MSBuild VC++

Jaki jest sposób przekazania tej ścieżki dla MSBUild?

Edytuj: Wygląda na to, że MSBuild nie przekazuje ścieżki (lub przełącznika/u) do vcbuild. Począwszy od VCBuild zamiast nie na zależności.

+0

Program Visual 2010 działa bardziej zgodnie z oczekiwaniami, ponieważ używane są katalogi właściwości użytkownika. Nie ma już potrzeby używania zmiennych środowiskowych. – CharlesB

+1

Najnowsza wersja VS2013, zobacz moją odpowiedź w wątku: http://stackoverflow.com/questions/15654002/adding-dodatkowe-library-and-include-paths-when-compiling- from-command-line/28103688 # 28103688 – zhifac

Odpowiedz

13

Aby ustawić katalogi uwzględniania, możesz dodać je do zmiennej środowiskowej INCLUDE. Używasz tego samego formatu, co w PATH env. zmienna - oddzielasz ścieżki średnikami.

Aby ustawić katalogi bibliotek - możesz zrobić to w podobny sposób, umieszczając je w zmiennej środowiskowej LIB.

Aby ustawić zmienne środowiskowe, wystarczy kliknąć prawym przyciskiem myszy "Mój komputer" i wybrać "Właściwości". Następnie przechodzisz do zakładki "Zaawansowane", a tam jest przycisk "Zmienne środowiskowe".

Albo można uruchomić MSBuild ze skryptu wsadowego, w tym przypadku, przed wywołaniem MSBuild można ustawić zmienne include i lib tak:

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

Jeśli to nie działa poprawnie, wypróbuj poprawkę zaproponowaną przez @CharlesB poniżej. – Tibo

+2

Musisz dodać '/ p:" VCBuildAdditionalOptions =/useenv "' do argumentów MSBuild, aby pobrać zmienne INCLUDE i LIB – CharlesB

4

... a także może chcesz do dołączania% include% i% LIB% do zmiennych, aby uniknąć nadpisywania z nich

set INCLUDE=C:\Libraries\LibA\Include;%INCLUDE% 
set LIB=C:\Libraries\LibA\Lib\x86;%LIB% 
Powiązane problemy