Ich habe ein Problem mit install(DIRECTORY
FILE_MATCHING in cmake. Ich möchte alle Dateien erhalten, die die Dateierweiterung *.h
oder keine Dateierweiterung haben. Ich habe den folgenden Code, der nicht funktioniert, weil es scheint, dass jede PATTERN
mit einem OR berechnet wird (boolesche Operation) und *
ist ein Platzhalter für jede Datei, und so wird jede Datei kopiert.CMake: installieren (VERZEICHNIS) und Dateien ohne Erweiterung
install(DIRECTORY mydir
DESTINATION .
FILE_MATCHING
PATTERN "*.h"
PATTERN "*"
Weiß jemand, wie ich dieses Szenario filtern kann?
Thx. Das funktioniert. 2 Minuten nach meinem ersten Post fand ich den REGEX-Befehl, aber ich habe versucht, den richtigen Ausdruck zu finden. Deines funktioniert gut, aber was mich irritiert ist, dass meine Regex auf regexr.com und regex101.com funktioniert, aber nicht in cmake => "^ [^.] + $", Weißt du, warum meine Regex in cmake nicht funktioniert, was? so besonders an der/in cmake regex? – tonka
In CMake wird * PATTERN * nur auf * last component * des Pfads angewendet (dh ohne Verzeichnisse), aber * REGEX * wird auf ** full path ** angewendet. Aus [documentation] (https://cmake.org/cmake/help/v3.7/command/install.html) für den 'install' Befehl:" Ein 'REGEX' wird jeden Teil des vollständigen Pfades abgleichen, den er benutzen kann '/' und '$' um das 'PATTERN' Verhalten zu simulieren." – Tsyvarev
Gut zu wissen. Danke dafür – tonka