假设我有一个节点模块,它本质上是一些使用自动工具的标准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. 在运行时从外部配置文件重新加载配置设置