问题摘要
我正在尝试将Google Crashpad ( Google的继承者)一个崩溃报告系统集成到一个软件套件中,它可以动态地链接到它的所有外部库。我的问题是,Crashpad的默认设置是作为静态库构建--我需要动态地构建它。
克隆Crashpad之后,GN将用于生成生成的.ninja文件。构建命令如下:
$ gn gen out/Default
上面的命令生成所有的.ninja文件。
为了生成Visual解决方案文件(.sln),可以使用以下生成命令:
$ gn gen out/Default --ide=vs
汇编:
$ ninja -C out/Default
我试过什么
发布于 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"
https://stackoverflow.com/questions/57486462
复制相似问题