Après avoir exécuté "ninja -t clean" obtenu "Autorisation refusée" lors de la suppression d'un dossier.
MSDN décrit stdio.h remove () comme une fonction de suppression de fichiers (pas de répertoires), tandis que les pages de manuel Linux le décrivent comme une fonction de suppression de fichiers et de dossiers. Cela pourrait être un problème spécifique à la plate-forme.
L'appel de _rmdir () (http://msdn.microsoft.com/en-us/library/wt8es881.aspx) fait l'affaire.
+1
Sur Linux, les répertoires ne sont supprimés que lorsqu'ils sont vides. Le comportement peut-il être modifié en suppression récursive? Ou peut-être donner au buildscript une opportunité de faire le nettoyage avant que -t clean ne tente de supprimer () le répertoire?
Même problème ici.
Le répertoire a été généré par la règle créée à partir de CMake add_custom_command ()
ninja propre
[1/1] Nettoyage de tous les fichiers créés ...
ÉCHEC: / usr / bin / ninja -t clean
ninja: erreur: supprimer (mon répertoire): répertoire non vide
CMakeLists.txt
Le problème est toujours présent dans la version 1.7.2 sous Windows et Linux.
J'ai ajouté un projet CMake qui lancera cette erreur sur ninja clean (je ne peux pas coder les fichiers ninja).
Remarque: il fonctionne avec les générateurs Make ou VS.
Sur Linux, les répertoires ne sont supprimés que lorsqu'ils sont vides. Le comportement peut-il être modifié en suppression récursive?
Ce serait un changement assez important et les gens pourraient perdre leurs fichiers. Voir # 1334 btw.
Gardons ce problème à propos de l'erreur "Autorisation refusée" de Windows uniquement.
La documentation de Microsoft pour remove
indique qu'elle "définit errno soit sur EACCES pour indiquer que le chemin spécifie un fichier en lecture seule, spécifie un répertoire ou que le fichier est ouvert ...", ce qui explique ce qui se passe . Peu importe si le répertoire est vide, on ne peut tout simplement pas appeler remove
sur un répertoire si vous utilisez msvcrt.
Commentaire le plus utile
CMakeLists.txt
Le problème est toujours présent dans la version 1.7.2 sous Windows et Linux.
J'ai ajouté un projet CMake qui lancera cette erreur sur ninja clean (je ne peux pas coder les fichiers ninja).
Remarque: il fonctionne avec les générateurs Make ou VS.