2014-12-03 8 views
3

본질적으로 autotools를 사용하는 표준 C 라이브러리 주위에 래퍼 인 노드 모듈이 있다고 가정합니다. 따라서 라이브러리 자체는 ./configuremake 및 아마도 make install을 사용하여 설치됩니다. 래퍼 코드는 단지 몇 개의 파일이며 gyp로 처리 할 수 ​​있습니다. 그러나 종속성을 어떻게 처리 할 수 ​​있습니까? 내 코드를 컴파일하기 전에 autotooled 라이브러리를 만들려는 gyp을 어떻게 지시 할 수 있습니까? 또는 autotools가 Windows에서 실행될 수 없기 때문에 가능하지 않습니까? 내가 configure을 실행할 수 없다면 비슷한 일을하는 gyp 방식이 있습니까? 특히 어떤 기능이 availabel이고 어떤 기능이 아닌지 알아 내야합니까?gyp 파일에서 실행 구성

답변

2

command line expansion을 사용하여 gyp에서 임의의 명령을 실행할 수 있습니다. 그러나 당신이 지적했듯이, 당신은 크로스 플랫폼이되고 싶다면 신뢰할 수 없습니다.

일반적으로 플랫폼 간 연결을 원할 경우 종속성을 "gyp-ify"해야합니다. 이것은 주 binding.gyp에 종속성 gyp로 포함 된 별도의 gyp 파일을 만드는 것을 의미합니다. 컴파일 할 소스 파일을 모두 나열해야하고 (예 : 라이브러리가 -Dfoo과 같이 컴파일 타임을 사용하는 경우) 필요한 라이브러리 별 컴파일 플래그를 추가해야하기 때문에 시간이 걸릴 수 있습니다.

배치 할 라이브러리의 소스를 묶고 라이브러리와 동적으로 링크하는 대신 종속성을 동적으로 만드는 것도 고려해 볼 수 있습니다. 라이브러리를 "gyp-ify"할 필요가 없으므로 binding.gyplibraries: ['-lfoo']과 같은 몇 가지를 추가하기 만하면되므로 훨씬 쉽습니다.

4
활력 actions

'target_type': none은 다음과 같습니다

{ 
     'target_name': 'FTGL', 
     'type': 'none', 
     'dependencies': ['FreeType'], 
     'actions': [ 
      { 
       'action_name': 'build_ftgl', 
       'message': 'Building FTGL...', 
       'inputs': ['ftgl/src/FTGL/ftgl.h'], 
       'outputs': ['ftgl/src/.libs/libftgl.a'], 
       'action': [''eval', 'cd ftgl && ./configure --with-pic && make -C src''], 
      }, 
     ], 
    } 

eval 작업에 사용, 그것은 여러 명령을 실행할 수 있습니다.