2012-04-10 8 views
10

Wygląda na to, że musimy utworzyć osobny folder dla każdego typu kompilacji (debug/release), uruchomić cmake na każdym z nich i wygenerować osobny plik Makefile dla konfiguracji debugowania/wydania. Czy jest możliwe utworzenie jednego pliku Makefile za pomocą cmake'a, który obsługuje zarówno konfigurację debugowania/wydania w tym samym czasie, jak i kiedy faktycznie uruchamiamy "make", który utworzy osobne foldery dla produktów pośrednich i końcowych (takich jak biblioteki dll, exe).Can Cmake generuje pojedynczy plik Makefile, który obsługuje debugowanie i wydanie

Odpowiedz

8

O ile mi wiadomo, nie można tego osiągnąć za pomocą pojedynczego zestawu skryptów kompilacji. Jednak to, co można zrobić, to mieć dwa podkatalogi swojego obszaru roboczego:

build/ 
build/debug 
build/release 

Następnie wykonaj:

$ cd build 
$ 
$ cd build/debug 
$ cmake -DCMAKE_BUILD_TYPE=Debug ../.. 
$ make 
$ 
$ cd ../release 
$ cmake -DCMAKE_BUILD_TYPE=Release ../.. 
$ make 

Jeśli to konieczne, można dodać kolejny skrypt kompilacji w katalogu build jako takie:

#!/bin/sh 
cd debug && make && cd .. 
cd release && make && cd .. 
+0

co z plikiem sln wizualnego studia, czy generuje on także tylko debugowanie lub konfigurację tylko do wydania, czy obsługuje zarówno w tym samym pliku .sln? – user243655

+1

@ user243655: Wydaje się, że generuje wiele konfiguracji: 'Debugowanie',' Release', 'MinSizeRel' i' RelWithDebInfo'. –

+0

Wielkie dzięki za informacje. – user243655

1

Można to osiągnąć za pomocą polecenia ADD_CUSTOM_TARGET. Na przykład, jeśli chcesz dodać zarówno debugowanie i celów zwalniające w makefile, dodać następujące do pliku CMakeLists.txt:

ADD_CUSTOM_TARGET(debug 
    COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug ${CMAKE_SOURCE_DIR} 
    COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all 
    COMMENT "Creating the executable in the debug mode.") 

ADD_CUSTOM_TARGET(release 
    COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Release ${CMAKE_SOURCE_DIR} 
    COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all 
    COMMENT "Creating the executable in the release mode.") 

Następnie, po skonfigurowaniu z cmake, można uruchomić make debug aby cel debugowania i uruchom make release, aby zwolnić miejsce docelowe w tym samym katalogu.

Powiązane problemy