<p>ninja: erreur: supprimer (someDirectory) Autorisation refusée. les fenêtres</p>

Créé le 9 oct. 2014  ·  6Commentaires  ·  Source: ninja-build/ninja

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.

bug windows

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.

Tous les 6 commentaires

+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.

Cette page vous a été utile?
0 / 5 - 0 notes