首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Google构建到共享(动态)库中?

如何将Google构建到共享(动态)库中?
EN

Stack Overflow用户
提问于 2019-08-13 23:28:38
回答 1查看 755关注 0票数 2

问题摘要

我正在尝试将Google Crashpad ( Google的继承者)一个崩溃报告系统集成到一个软件套件中,它可以动态地链接到它的所有外部库。我的问题是,Crashpad的默认设置是作为静态库构建--我需要动态地构建它。

克隆Crashpad之后,GN将用于生成生成的.ninja文件。构建命令如下:

$ gn gen out/Default

上面的命令生成所有的.ninja文件。

为了生成Visual解决方案文件(.sln),可以使用以下生成命令:

$ gn gen out/Default --ide=vs

汇编:

$ ninja -C out/Default

我试过什么

  1. 这个StackOverflow问题回答了同样的问题,建议您可以简单地修改输出的.ninja文件的链接标志(/MT改为/MD)。但是,对所有输出的文件进行打招呼表明不存在这样的标志。
  2. 回溯积分指南有一个链接到预构建的这里的动态(共享)库。但是,他们似乎使用VisualStudio2017构建了这些库,使用了比我使用的更新的工具集(v141)。我需要重新构建用于动态链接的Crashpad,并使用Visual 2015 (v140)。
EN

回答 1

Stack Overflow用户

发布于 2019-08-16 22:32:06

产出:

$ gn gen out/Default

将创建一个名为toolchain.ninja,的文件,其中包含告诉指定编译器如何编译项目的行。在Crashpad的例子中,它们看起来是这样的:

rule cc command = ninja -t msvc -e environment.amd64 -- cl.exe /nologo /showIncludes ${defines} ${include_dirs} ${cflags} ${cflags_c} /c ${in} /Fo${out} /Fd"${target_out_dir}/${label_name}_c.pdb" description = CC ${out} deps = msvc

rule cxx command = ninja -t msvc -e environment.amd64 -- cl.exe /nologo /showIncludes ${defines} ${include_dirs} ${cflags} ${cflags_c} /c ${in} /Fo${out} /Fd"${target_out_dir}/${label_name}_cc.pdb" description = CXX ${out} deps = msvc

对于Visual 2015 / 2017编译器,可以将/MD标志添加到上面的每个command行。这将动态编译库。例如:

command = ninja -t msvc -e environment.amd64 -- cl.exe /MD /nologo /showIncludes ${defines} ${include_dirs} ${cflags} ${cflags_c} /c ${in} /Fo${out} /Fd"${target_out_dir}/${label_name}_cc.pdb"

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57486462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档