Unix normal ifadeler için Windows eşdeğeri


0

İçin bir yedek var mı

**/*.*
**/*.cpp

böylece böyle bir şey yapabilirim:

gcc -std=c++14 -I ./include/ -o ./bin/main ./src/**/*.cpp

(herhangi bir makefile kullanmadığımda gittiğim yol)

Windows'ta bu şekilde yaptım:

gcc -std=c++14 -I include -o bin/main src/main.cpp src/Sth.cpp src/SthEl.cpp

çünkü düzenli ifadeler işe yaramıyor gibi görünüyor ya da çalışmasını sağlayacak bir yol bulamadım ...

Bana pencerelerde nasıl yapılacağını söyler misin?


2
Başlangıç ​​için normal bir ifade değil, normal joker karakterler kullanıyorsunuz. ** bir nicelleştirici olduğu ve "herhangi bir sayıda öğeden" herhangi bir sayıda öğenin niceliğinin pek bir anlam ifade etmediğinden normal bir ifade olmayacaktır. Windows'ta kullanabilirsiniz src/*.cpp. Kaçırdığınız, "her dizindeki her cpp dosyası" anlamına gelen bir joker karakterdir. Genellikle bunun için bir komut dosyası kullanırsınız. Bu durumda, dosyaları toplayan ve GCC parametresi olarak kullanabileceğiniz bir dize oluşturan bir PowerShell betiği kullanabilirsiniz.
Seth

Naja indirekt ist och * ein regulärer Ausdruck, Die die Sprache genau Sigma * akzeptiert damit impliziert wird.
baxbear

Bu tanımdan memnunsanız, sorun değil. Ama yapamazsan ls ./[a-Z]{4}/.* Düzenli bir ifadenin teknik tanımını ve ** teknik sistemlerde genellikle normal ifade olarak kabul edilenlerin ihlali / saçmalıkları olur. Ek olarak benim ls Örneğin, muhtemelen herhangi bir karakterden ziyade değişmez yapmak için ilk noktadan kaçmanız gerekir.
Seth

Yanıtlar:


0

Ne zaman mutlak yolları kullanabileceğinize bağlı olarak, aşağıdaki PowerShell Kodunu kullanabilirsiniz:

$files = (Get-ChildItem -Recurse -Path ./src *.cpp | %{echo $_.FullName}) -Join " "
gcc -std=c++14 -I include -o bin/main $files

Bunu kısaltmak mümkün olabilir:

gcc -std=c++14 -I include -o bin/main ((Get-ChildItem -Recurse -Path ./src *.cpp | %{echo $_.FullName}) -Join " ")

Bu tam olarak Linux eşdeğeriniz kadar kısa veya okunabilir değil, ancak istediğiniz sonucu elde etmek için en yakın düşüncem.

Eğer senin src kullanabileceğiniz düz bir hiyerarşi var:

gcc -std=c++14 -I include -o bin/main src/*.cpp
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.