2012-06-14 28 views
7

próbuję włączyć debug/release zależnych flagi kompilatora, takich jak:CUpewnij ignorując CMAKE_BUILD_TYPE = Debug

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x -Wall -DUSE_BOOST") 
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall") 
set(CMAKE_CSS_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall -O3") 

tworzę folderu kompilacji z polecenia takie jak:

cmake -DCMAKE_BUILD_TYPE=Release -D UseFortran=True -D CMAKE_CXX_COMPILER=g++-4.6 ~/repos/cliques/cliques 

jednak wygląda na CMAKE w wersji 2.8.7, CMAKE_BUILD_TYPE jest ignorowany. Wydaje się, że działa doskonale z wersją 2.8.4 (na innej maszynie), więc czy ta metoda została uznana za przestarzałą lub czy jest tu jakiś inny problem?

Zenna

+0

To nie jest przestarzałe. Jak oceniasz, że jest ignorowany? – Fraser

+0

Brak symboli debugowania w pliku wykonywalnym, a jeśli dodaję nieprawidłowe polecenia, np. set (CMAKE_CXX_FLAGS_DEBUG "$ {CMAKE_CXX_FLAGS_DEBUG} -Zawsze mnóstwo złych poleceń"), nie ma żadnego efektu. – zenna

+2

Należy przeczytać: http://www.cmake.org/pipermail/cmake/2008-September/023808.html – bitek

Odpowiedz

4

Problem polegał na tym, że musi istnieć przestrzeń pomiędzy -D i zmiennej. Oznacza to, że powinien on być:

cmake -D CMAKE_BUILD_TYPE=Release -D UseFortran=True -D CMAKE_CXX_COMPILER=g++-4.6 ~/repos/cliques/cliques 
+1

I nie zapomnij zdefiniować typu zmiennej. Z dokumentów CMake'a jest: '-D : = ' –

+5

Mam _never_ musiałem użyć spacji po -D. Czy na pewno plik "CMAKE_CXX_FLAGS_DEBUG" zawierał znak "-g"? Jeśli ponownie użyłeś tego samego katalogu kompilacji, możliwe, że niepoprawne wartości w zmiennej pamięci podręcznej zostały ponownie użyte. – Mark

+0

Czy typ kompilacji "RELEASE" i "Release" jest równoważny? – nn0p

1

Dlaczego nie używasz -DCMAKE_BUILD_TYPE=Debug, podczas tworzenia budować folder? Cmake build Projekt typu Release lub projektu typu Debug, nie oba razem.

2

Myślę, że zrobili literówkę w CMAKE_BUILD_TYPE w poprzedniej wersji. Mieliśmy to porblem i tutaj linia, która działa.

cmake -D CMAKE_BUILD_TYPE:STRING=Debug ../src 

Możesz sprawdzić, co poszło dobrze, używając:

cmake -L ../src 

Użycie tego polecenia może dać Ci właściwą drogę do nazwania zmiennej CMAKE_BUILD_TYPE.

Powodzenia.

5

Masz literówkę. Twój kod mówi: CMAKE_CSS_FLAGS_RELEASE. Zawiadomienie CSS, powinno być CXX.