2014-04-17 11 views
5

Mam problemy z konfiguracją mojego projektu Eclipse C++. Muszę połączyć źródło z różnych katalogów tu i tam, aw moim środowisku źródło, którego potrzebuję, faktycznie się czasami przemieszcza (na przykład, gdy zawsze chcę mieć najnowszą wersję podsystemu znajdującego się obecnie w katalogu takim jak /aaa/bbb/v1.2.3/src). Zawsze znam lokalizację źródła, które chcę, poprzez zmienne środowiskowe linuksa, takie jak $SYSTEM1_LATEST_ROOT. Bez tego muszę aktualizować wszystkie moje projekty, gdybym wybrał źródło z nowej lokalizacji.Projekt Eclipse powiązał zasoby ze zmienną środowiskową

Nie mogę znaleźć sposobu na uwzględnienie zmiennych środowiskowych w ścieżkach dla połączonych zasobów. Zawierają katalogi działa idealnie (te są zdefiniowane w moim pliku .cproject), na przykład (.cproject):

<option id="..." name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath"> 
    ... 
    <listOptionValue builtIn="false" value="${SYSTEM1_LATEST_ROOT}/src"/> 
    ... 
</option> 

Dla połączonych zasobów (zdefiniowany w pliku .project) Wiem, że mogę używać zmiennych drogi, ale są one zdefiniowane wewnątrz Tylko Eclipse i nie znajduję sposobu na ich oparcie na zmiennych środowiskowych, ale tylko w odniesieniu do mojej własnej lokalizacji projektu, co nie jest tym, co chcę zrobić.

Krótko mówiąc, chcę połączyć kod źródłowy z lokalizacji na podstawie zmiennych środowiskowych. Nazwa zmiennej jest stała, ale faktyczna lokalizacja (znana przez zmienną środowiskową) źródła nie jest.

Przykład roboczy ze ścieżką względem projektu. To nie jest to, co chcę (.project):

<linkedResources> 
    <link> 
     <name>System1_src</name> 
     <type>2</type> 
     <locationURI>PARENT-6-PROJECT_LOC/src</locationURI> 
    </link> 
</linkedResources> 

nieprodukcyjnym przykład tego, co chcę zrobić (.project):

<linkedResources> 
    <link> 
     <name>System1_src</name> 
     <type>2</type> 
     <locationURI>${SYSTEM1_LATEST_ROOT}/src</locationURI> 
    </link> 
</linkedResources> 

jakieś sugestie?

Odpowiedz

4

Po odczekaniu miesiąca i dowiedzieć nadszedł czas odpowiem własnymi ustaleniami ..

pierwsze, pojęcie zmiennych ścieżki (http://help.eclipse.org/indigo/index.jsp?topic=/org.eclipse.platform.doc.user/concepts/cpathvars.htm);

"Linked resource target paths can be either defined 
as absolute paths, or relative to a path variable." 

Dwie opcje; ścieżki bezwzględne lub względem zmiennej ścieżki.

Konkretnie mówi o zmiennych Ścieżka:

"Each project contain a pre-defined set of path 
variables available for defining linked resources, 
including ECLIPSE_HOME, PARENT_LOC, PROJECT_LOC and 
WORKSPACE_LOC. 

New path variables can be defined relative to 
existing path variables by using the ${VAR} syntax. 
For example, a path variable FOO can be defined 
relative to BAR by defining it to "${BAR}../foo"." 

Innymi słowy, zmienne ścieżki są zawsze w stosunku do lokalizacji projektu w jakiś sposób, używając liberalną interpretację projektu tekstu.

Następną opcją jest ścieżka bezwzględna. Ścieżka bezwzględna zawierająca zmienną środowiskową zadziała!

"The linked resource target path can be changed by 
selecting the Edit... button in the File > Properties > 
Resource property page of the linked resource. " 

Próbując tego, staje się boleśnie oczywiste, że tylko zmienne ścieżki są obsługiwane jako część ścieżki do połączonego zasobu. I już znamy definicję zmiennej ścieżki.

Odpowiedź jest ...

Eclipse nie zawiera tego bardzo podstawową funkcję.

Każdy, proszę, udowodnij, że się mylę!

+0

Dziękujemy za podzielenie się swoimi spostrzeżeniami. Obecnie przechodzę podobny ból z moim IDE opartym na zaćmieniu. Jeśli jednak możesz użyć $ {VAR}, to czy Twój powinien zadziałać, jeśli wypróbujesz $ {SYSTEM1_LATEST_ROOT} ./ src? – Dave

2

Pomyślałem, że dodam tutaj rozwiązanie tego problemu, aby inni mogli z niego skorzystać.

Chociaż nie jest obsługiwane "domyślnie", okazuje się, że Eclipse może używać zmiennych ścieżkowych. Kluczem jest tutaj użycie funkcji "Połączone zasoby". Idź do okna -> Preferencje -> Ogólne -> Przestrzeń robocza -> Połączone zasoby i dodaj tam swoje zmienne ścieżki.

enter image description here

+0

Myślę, że to odpowiedziałoby na moje pytanie tylko wtedy, gdy wartość 'zmiennej ścieżki' może zawierać' zmienną środowiskową', na przykład '$ {FREESCALE}/KSDK_1.1.0'. Chodzi o to, że chcę, aby połączony zasób był połączony w oparciu o zmienne środowiskowe ustawione przez jakiegoś administratora, który kontroluje moje środowisko. – Martin

+0

Tak, doszedłem do wniosku, że to byłby problem. Czy próbowałeś użyć zmiennej env dla wartości i okazało się, że tak naprawdę nie działa? – Dave

+2

Tak, co jest tak denerwujące, to to, że działa idealnie dla ścieżek dołączania, ale nie dla połączonych zasobów. Nie rozpoznaję dokładnie twojego zrzutu ekranu, więc mógłbym pójść jeszcze raz z nowszą wersją eclipse, ale minęło trochę czasu odkąd miałem z tym problemy. W tamtym czasie naprawdę czułem się, jakbym przetestował każdy możliwy sposób edytowania xml linkedResource. – Martin

Powiązane problemy