假設我有一個節點模塊,它本質上是一些使用自動工具的標準C庫的包裝。因此,庫本身將使用./configure
和make
以及可能的make install
進行安裝。包裝器代碼只是幾個文件,可以由gyp處理。但我如何處理依賴關係?在編譯我的代碼之前,如何指示gyp我想構建自動處理庫?或者這是不可能的,因爲autotools不能在Windows上運行?如果我不能運行configure
,有沒有一些方法可以做類似的事情,特別是檢測哪些函數是可用的,哪些不是?在gyp文件中運行配置
3
A
回答
2
您可以使用command line expansion在gyp中執行任意命令。然而,正如你所指出的,如果你想要跨平臺的話,這是不可靠的。
通常,如果您希望它是跨平臺的,那麼您需要「依賴」您的依賴關係。這意味着創建一個單獨的gyp文件,作爲依賴項gyp包含在主要的binding.gyp
中。這可能需要一些時間,因爲必須列出所有要編譯的源文件,並且還必須添加任何必需的特定於庫的編譯標誌(例如,如果庫使用編譯時定義,如-Dfoo
)。
您可能還會考慮使依賴性動態化,而不是捆綁您要打包的庫的源代碼,並且只是動態鏈接庫。這很容易,因爲您不必「圖書館」庫,你只需要添加一些東西,如libraries: ['-lfoo']
到你的binding.gyp
。
4
隨着GYP 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
使用的動作,它可以運行多個命令。
相關問題
- 1. iOS:在Backdate上運行配置文件
- 2. 在execvp節點-GYP配置錯誤()
- 3. 在maven中運行配置
- 4. Wildfly配置文件運行時參數
- 5. Kubectl使用yaml文件配置運行
- 6. Talend運行時配置文件
- 7. Nsight配置文件實驗未運行
- 8. 空的Eclipse運行配置文件
- 9. 碼頭運行時配置文件
- 10. 蟒蛇 - c配置文件未運行
- 11. 運行時的SSIS配置文件
- 12. Eclipse運行配置本地文件
- 13. 在C++中在運行時嵌入配置文件
- 14. Eclipse運行配置 - 在單個配置中運行多個配置?
- 15. 在bashrc中運行函數或別名,或通過nohup運行配置文件
- 16. 我如何在intellij想法中運行(配置運行).r文件?
- 17. 在運行時從Java中的配置文件創建對象
- 18. Maven未在配置文件中指定運行測試
- 19. 如何在codeigniter上的配置文件中運行函數
- 20. 在子文件夾中運行的Magento的Nginx配置
- 21. 在多個grunt.js文件中配置運行任務
- 22. 在NHProf中清除NHibernate Cache之間的配置文件運行
- 23. 在pom.xml中強制運行配置文件父POM
- 24. 如何在運行時設置logback配置文件?
- 25. WPF:在運行時更改配置文件的用戶設置?
- 26. maven(在dev配置文件下運行)如何在index.html中包含JavaScript文件?
- 27. node-gyp Debug |釋放配置變量
- 28. node-gyp配置爲發佈模式
- 29. 基於構建配置的GYP變量
- 30. 在運行時從外部配置文件重新加載配置設置