2015-07-07 12 views
10

Na projekcie, nad którym się rozwijam, używamy cmake do kompilowania naszej usługi. Obecnie musimy pobrać dane do Qt z 3 różnych lokalizacji i jestem ciekawy, czy istnieje sposób na uruchomienie jednego polecenia cmake na trzech osobnych.Wiele Cmake_Prefix_Paths

Co obecnie używamy:

cmake -G "Visual Studio 12 2013" -DWITH_SERVER=1 -DCMAKE_PREFIX_PATH=C:\Qt\5.5\msvc2013\lib\cmake .. 
cmake -G "Visual Studio 12 2013" -DWITH_SERVER=1 -DCMAKE_PREFIX_PATH=C:\protobuf\src .. 
cmake -G "Visual Studio 12 2013" -DWITH_SERVER=1 -DCMAKE_PREFIX_PATH=C:\protobuf\cmake\build\Release .. 

Mamy próbował przejść pod tą samą banderą 3 razy i oddzielenie ścieżki z : i ;, ale nie wydają się działać zgodnie z oczekiwaniami.

+1

Potrzebujesz wielu wpisów w 'CMAKE_PREFIX_PATH' lub źle cię zrozumiałem? Jeśli tak, to użyj '-DCMAKE_PREFIX_PATH =" C: \ Qt \ 5.5 \ msvc2013 \ lib \ cmake; C: \ protobuf \ src; C: \ protobuf \ cmake \ build \ Release "' – ixSci

+0

Tak, potrzebuję wielu wpisów dla ścieżki prefiksu. Gdy próbowałem wcześniej, nie działało to zgodnie z oczekiwaniami, kończąc po pierwszej opcji – ZeldaZach

+0

Właśnie wypróbowałem i wydrukuje tak, jak powinno: 'message (" !!!!!! "$ {CMAKE_PREFIX_PATH}) 'Uruchamianie z powyższym ciągiem daje następujące wyniki:' !!!!!! C: \ Qt \ 5.5 \ msvc2013 \ lib \ cmakeC: \ protobuf \ srcC: \ protobuf \ c ?? make \ build \ Release' Zauważ znaki zapytania w trzeciej ścieżce. Coś jest nie tak z łańcuchem - wygląda na to, że jest tam jakaś postać unicode – ixSci

Odpowiedz

13

Aby podać wiele ścieżek w zmiennej CMAKE_PREFIX_PATH, należy ograniczyć każdy wpis przez ; (średnik). Więc polecenie będzie wyglądać następująco:

cmake -DCMAKE_PREFIX_PATH="C:\Qt\5.5\msvc2013\lib\cmake;C:\protobuf\src;C:\protobuf\c‌​make\build\Release" 

Aby sprawdzić, czy wszystko w porządku z dostarczonych ścieżkach można użyć następującego kodu w pliku cmake:

foreach(path ${CMAKE_PREFIX_PATH}) 
    message("Path: " ${path}) 
endforeach(path) 

To będzie drukować każdą ścieżkę celu.

+0

Działa to zgodnie z oczekiwaniami, dzięki za pomoc! – ZeldaZach

+0

Wydaje się nie działać w Jenkins 2.60.2 i CMake 3.9.1. – StarShine