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
10
A
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 ..
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.
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
@ user243655: Wydaje się, że generuje wiele konfiguracji: 'Debugowanie',' Release', 'MinSizeRel' i' RelWithDebInfo'. –
Wielkie dzięki za informacje. – user243655