2013-03-13 5 views
6

Piszę plik binding.gyp dla mojego nowego modułu node.js. Mam wszystkie moje pliki źródłowe pod podkatalogu src/. Chciałbym użyć ich wszystkich podczas budowania modułu. Zamiast modyfikować bind.gyp za każdym razem, gdy dodaję nowy plik cpp, chciałbym wyświetlić wszystkie pliki cpp za pośrednictwem jakiegoś mechanizmu wieloznacznego. Czy węzeł-gyp obsługuje to? Coś jak następujące (który nie działaCzy istnieje mechanizm wieloznaczny do listy źródeł w węźle-gyp

{ 
    'targets' : [ 
     { 
      'target_name' : 'mymod', 
      'sources' : 'src/*.cpp' 
     } 
    ] 
} 

Spojrzałem na https://code.google.com/p/gyp/wiki/InputFormatReference, ale nie znaleźliśmy niczego łatwo pożytecznego.

Odpowiedz

19

Zdobione

{ 
    'targets' : [ 
     { 
      'target_name' : 'mymod', 
      'sources' : [ '<[email protected](ls -1 src/*.cpp)' ], 
     } 
    ] 
} 

Wyjazd this link

Aktualizacja

Powyższe rozwiązanie nie jest przenośne na różnych platformach. Oto przenośna wersja:

{ 
    'targets' : [ 
     { 
      'target_name' : 'mymod', 
      'sources' : [ "<[email protected](node -p \"require('fs').readdirSync('./src').map(f=>'src/'+f).join(' ')\")" ], 
     } 
    ] 
} 

Zasadniczo zastępuje katalogu platformy konkretne polecenia (ls) wykaz, za pomocą kodu JavaScript, który wykorzystuje moduł węzła fs do listy zawartości katalogu.

-1

Jeszcze bardziej przenośna wersja (która nie zależy od węzła, ale raczej python):

"<[email protected](python -c \"import os; print '\n'.join(['%s' % x for x in os.listdir('.') if x[-3:] == '.cc' and 'test' not in x])\")"