Vous pouvez utiliser quelque chose comme:
add_custom_target(clean-cmake-files
COMMAND ${CMAKE_COMMAND} -P clean-all.cmake
)
// clean-all.cmake
set(cmake_generated ${CMAKE_BINARY_DIR}/CMakeCache.txt
${CMAKE_BINARY_DIR}/cmake_install.cmake
${CMAKE_BINARY_DIR}/Makefile
${CMAKE_BINARY_DIR}/CMakeFiles
)
foreach(file ${cmake_generated})
if (EXISTS ${file})
file(REMOVE_RECURSE ${file})
endif()
endforeach(file)
J'ai l'habitude de créer un "make clean" commande ajout de l'exemple précédent, un appel à "faire propre":
add_custom_target(clean-all
COMMAND ${CMAKE_BUILD_TOOL} clean
COMMAND ${CMAKE_COMMAND} -P clean-all.cmake
)
N'essayez pas d'ajouter le "nettoyer" la cible comme une dépendance:
add_custom_target(clean-all
COMMAND ${CMAKE_COMMAND} -P clean-all.cmake
DEPENDS clean
)
Parce que "propre" n'est pas un véritable cible de CMake et cela ne fonctionne pas.
Par ailleurs, vous ne devez pas utiliser ce "nettoyage cmake-files" comme la dépendance de quoi que ce soit:
add_custom_target(clean-all
COMMAND ${CMAKE_BUILD_TOOL} clean
DEPENDS clean-cmake-files
)
Parce que, si vous le faites, tous les fichiers cmake sera effacer avant de nettoyer tout est complet, et faire de vous gratifiera d'une erreur de la recherche "CMakeFiles/clean-all.dir/build.faire". En conséquence, vous ne pouvez pas utiliser le nettoyage de toutes les commandes avant de "quelque chose" dans un contexte:
add_custom_target(clean-all
COMMAND ${CMAKE_BUILD_TOOL} clean
COMMAND ${CMAKE_COMMAND} -P clean-all.cmake
)
Cela ne fonctionne pas non plus.