Question

Je cherche une expression régulière pour correspondre à tous les fichiers commençant avec un « » dans un répertoire.

J'utilise CMake (de CMake doc: « CMake attend des expressions régulières, non globs ») et que vous voulez ignorer tous les fichiers commençant avec un point (fichiers cachés) mais "\..*" ou "^\..*" ne fonctionne pas: (

La chose étrange: cela fonctionne (grâce à de rq ) et de supprimer tous les fichiers cachés et les fichiers temporaires ( « ~ » fichiers terminés)

file(GLOB DOT ".*")
file(GLOB TILD "*~")

set (CPACK_SOURCE_IGNORE_FILES "${DOT};${TILD}")

Mais je ne peux pas trouver la bonne chose à écrire directement dans CPACK_SOURCE_IGNORE_FILES d'avoir le même résultat!

Voici le " doc " de cette variable.

Était-ce utile?

La solution

Sons comme GLOB est probablement ce que vous voulez.

Essayez ceci. Ouvrez un fichier « test.cmake » et ajouter ce qui suit:

file(GLOB ALL "*")
file(GLOB DOT ".*")
file(GLOB NOTDOT "[^.]*")

message("All Files ${ALL}")
message("Dot files ${DOT}")
message("Not dot files ${NOTDOT}")

Ensuite, créez deux fichiers de test:

touch .dotfile
touch notdot

Ensuite, exécutez "cmake -P test.cmake". La sortie est la suivante:

All Files /tmp/cmake_test/.dotfile;/tmp/cmake_test/notdot;/tmp/cmake_test/test.cmake
Dot files /tmp/cmake_test/.dotfile
Not dot files /tmp/cmake_test/notdot;/tmp/cmake_test/test.cmake

Cela a été testé avec CMake 2.6.0.

Autres conseils

En utilisant la syntaxe standard regex:

^\..*

Depuis CMake ne semble pas comme cela, il peut utiliser quelque chose comme:

^\\..*

C'est juste une supposition, bien que, depuis que je n'ai pas / utiliser CMake.

La seule ligne suivante fera le travail (cacher cachés et tilde ( « ~ ») terminé fichiers):

set(CPACK_SOURCE_IGNORE_FILES "/\\\\..*$;~$;${CPACK_SOURCE_IGNORE_FILES}")

Vous devez échapper.

^\..*

Essayez ceci:

^[.].*
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top