본질적으로 autotools를 사용하는 표준 C 라이브러리 주위에 래퍼 인 노드 모듈이 있다고 가정합니다. 따라서 라이브러리 자체는 ./configure
및 make
및 아마도 make install
을 사용하여 설치됩니다. 래퍼 코드는 단지 몇 개의 파일이며 gyp로 처리 할 수 있습니다. 그러나 종속성을 어떻게 처리 할 수 있습니까? 내 코드를 컴파일하기 전에 autotooled 라이브러리를 만들려는 gyp을 어떻게 지시 할 수 있습니까? 또는 autotools가 Windows에서 실행될 수 없기 때문에 가능하지 않습니까? 내가 configure
을 실행할 수 없다면 비슷한 일을하는 gyp 방식이 있습니까? 특히 어떤 기능이 availabel이고 어떤 기능이 아닌지 알아 내야합니까?gyp 파일에서 실행 구성
3
A
답변
2
command line expansion을 사용하여 gyp에서 임의의 명령을 실행할 수 있습니다. 그러나 당신이 지적했듯이, 당신은 크로스 플랫폼이되고 싶다면 신뢰할 수 없습니다.
일반적으로 플랫폼 간 연결을 원할 경우 종속성을 "gyp-ify"해야합니다. 이것은 주 binding.gyp
에 종속성 gyp로 포함 된 별도의 gyp 파일을 만드는 것을 의미합니다. 컴파일 할 소스 파일을 모두 나열해야하고 (예 : 라이브러리가 -Dfoo
과 같이 컴파일 타임을 사용하는 경우) 필요한 라이브러리 별 컴파일 플래그를 추가해야하기 때문에 시간이 걸릴 수 있습니다.
배치 할 라이브러리의 소스를 묶고 라이브러리와 동적으로 링크하는 대신 종속성을 동적으로 만드는 것도 고려해 볼 수 있습니다. 라이브러리를 "gyp-ify"할 필요가 없으므로 binding.gyp
에 libraries: ['-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
작업에 사용, 그것은 여러 명령을 실행할 수 있습니다.