- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在编写一个本地 Node 模块,我希望能够在发布和调试版本中构建它。
Node 模块链接到另一个库,该库在两个不同的目录中具有调试和发布版本。
现在这就是我卡住的地方 - 我如何为正在构建的当前配置指定库目录?
我尝试在configuration.debug.link_settings 键中设置它,但我收到错误:'在调试配置中不允许链接设置,在目标 binding.gyp 中找到
最佳答案
显然,这在跨平台方式中是不可能的。因此,希望这可以节省您几个小时的实验时间。
这是一个为 Mac 和 Windows 构建插件的 gyp 文件。
//This example assumes you have an external library 'thelibrary', located in
//./external/thelibrary
//With the two flavors, debug and release in lib/debug and lib/release
{
"targets": [
{
"target_name": "addon",
"sources": [
"src/addon.cpp",
"src/expose_the_library.cpp"
],
"include_dirs": [
"external/thelibrary/include"
],
"cflags!": [
"-fno-exceptions"
],
"cflags_cc!": [
"-fno-exceptions"
],
"conditions": [
[
"OS=='mac'",
{
"defines": [
"__MACOSX_CORE__"
],
"architecture": "i386",
"xcode_settings": {
"GCC_ENABLE_CPP_EXCEPTIONS": "YES"
},
"link_settings": {
"libraries": [
"-lthelibrary",
"-framework",
"IOBluetooth" //this is how you use a framework on OSX
],
"configurations": {
"Debug": {
"xcode_settings": {
"OTHER_LDFLAGS": [
"-Lexternal/thelibrary/lib/debug"
]
}
},
"Release": {
"xcode_settings": {
"OTHER_LDFLAGS": [
"-Lexternal/thelibrary/lib/release"
]
}
}
}
}
}
],
[
"OS=='win'",
{
"link_settings": {
"libraries": [
"-lthelibrary.lib",
]
},
"configurations": {
"Debug": {
"msvs_settings": {
"VCCLCompilerTool": {
"ExceptionHandling": "0",
"AdditionalOptions": [
"/MP /EHsc"
]
},
"VCLibrarianTool": {
"AdditionalOptions": [
"/LTCG"
]
},
"VCLinkerTool": {
"LinkTimeCodeGeneration": 1,
"LinkIncremental": 1,
"AdditionalLibraryDirectories": [
"../external/thelibrary/lib/debug"
]
}
}
},
"Release": {
"msvs_settings": {
"VCCLCompilerTool": {
"RuntimeLibrary": 0,
"Optimization": 3,
"FavorSizeOrSpeed": 1,
"InlineFunctionExpansion": 2,
"WholeProgramOptimization": "true",
"OmitFramePointers": "true",
"EnableFunctionLevelLinking": "true",
"EnableIntrinsicFunctions": "true",
"RuntimeTypeInfo": "false",
"ExceptionHandling": "0",
"AdditionalOptions": [
"/MP /EHsc"
]
},
"VCLibrarianTool": {
"AdditionalOptions": [
"/LTCG"
]
},
"VCLinkerTool": {
"LinkTimeCodeGeneration": 1,
"OptimizeReferences": 2,
"EnableCOMDATFolding": 2,
"LinkIncremental": 1,
"AdditionalLibraryDirectories": [
"../external/thelibrary/lib/release"
]
}
}
}
}
}
]
]
}
]
}
关于node.js - gyp - 如何指定链接库风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13979860/
我对 gyp 完全陌生,所以请原谅我对这个主题的任何无知——我正在尝试将一个使用 gyp 的项目合并到由 make 生成的更大环境中。有问题的 .gyp 文件有一个用于 C 文件的 -L 选项,它指向
我是第一次使用gyp,我已经阅读了它的在线帮助。我已经在命令行上的导出变量中使用 CC 选项设置了编译器(在 Windows 中使用 cygwin)。因此,所有文件都可以正确编译。现在,我想使用不同的
当node-gyp本身安装在/usr/bin/node-gyp中时,为什么它在绝对路径中寻找node-gyp.js?如果我这样做 find /usr -name node-gyp.js 结果是 /us
是否可以定义一个 GYP 变量,其值取决于构建配置的选择? 最佳答案 只需使用变量 $(BUILDTYPE)或 $(ConfigurationName) . 关于node-gyp - 基于构建配置的
在 Windows 10 v1903 上运行 npm 6.11.3、node-gyp 5.0.3、VS2019,出现此错误: 找不到模块 %AppData%\npm\node_modules\node
我在写 binding.gyp我的新 node.js 模块的文件。我的所有源文件都在 src/ 下子目录。我想在构建模块时使用所有这些。我不想每次添加新的 cpp 文件时都修改 binding.gyp
我希望看到在构建节点绑定(bind)时使用编译器和链接器标志。我怎样才能让node-gyp build在详细模式下运行来实现这一点。 (类似于 cmake 的 make VERBOSE=1) 最佳答案
node-gyp --help说: Usage: node-gyp [options] where is one of: - build - Invokes `make` and builds
我正在开发一个大node.js项目还包括几个 native 库。 为了在 JavaScript 中使用这些库,我使用 node-gyp 将它们编译为 Node 插件 (.node)。 。 我想运行no
我正在使用 node-gyp,我想在我的 binding.gyp 中使用环境变量的值文件。 这是困难的方式(列表上下文): '
我想用/MD 标志(多线程 DLL)编译一个 node.js 模块。 在 binding.gyp 的 cflags 选项中包含“/MD”不起作用。 最佳答案 在玩了 binding.gyp 之后 -
我正在尝试启动有关 Node C/C++ 附加组件的内容。 node-gyp 命令出错 我已经安装了vs2019,我的命令是 node-gyp configure --msvs_version=201
我整天都在做这件事,并尝试了很多不同的事情: 卸载 Node 并安装最新版本 使用 --msvs_version= 标志设置为 2010, 2011, 2012, 2013, 2015 删除 .nod
我正在尝试为 Node js 构建 hello world C++ 插件。 Node.js 和 Node-gyp 似乎都已成功安装到 Redhat Linux 中。但是,当我运行“node-gyp c
我在 ubuntu 14.04 和 node 8.0.0 下使用 NPM。 我已将我的 npm 从 5.2.0 升级到 5.6.0 但是在那之后所有的 npm 命令都失败了,说明有问题: node-g
我在 CentOS 6.8 上进行 node-gyp 重建时遇到错误: File "/usr/local/lib/node_modules/node-gyp/gyp/pylib/gyp/input.p
我正在为 nodejs 编写一个 C 插件,我可以毫无问题地使用 node-waf 编译和创建我的模块。但是我需要使用 node-gyp,当我尝试使用 node-gyp build 构建模块时,出现以
我有一个简单的 binding.gyp 文件来构建我的 node.js 扩展。我想改变库“mylib”的链接方法,静态链接而不是使用共享库。 { "targets": [ {
我正在尝试使用 npm 安装我的依赖项,但是当安装 firebase 时安装失败。我尝试使用 npm i firebase 单独安装 firebase但它不起作用。我删除了 node_modules
我正在创建 Angular 项目并使用 Express.js 作为后端,使用 SQLite3 作为数据库。当我通过命令 npm install sqlite3 安装 sqlite3 时,我在控制台中收
我是一名优秀的程序员,十分优秀!