代码之家  ›  专栏  ›  技术社区  ›  Martin Kosicky

如何在MSBudioC++中链接库(GRPC)中的库时停止创建.ASM文件

  •  0
  • Martin Kosicky  · 技术社区  · 7 年前

    我们有一个静态库,可以导出一些grpc.pb.cc、grpc.pb.h文件,除了一堆其他普通文件。我们称之为LibMicroservicesClient。

    然后,我们有另一个库正在使用msbuild中的ProjectReference链接此库:

    <ItemGroup>
     <ProjectReference Include="$(MSBuildThisFileDirectory)LibMicroservicesClient.vcxproj">
      <Project>{A397A6CB-641A-41FB-9E8C-2263EC3712E8}</Project>
      <Private>false</Private>
      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
      <LinkLibraryDependencies>true</LinkLibraryDependencies>
      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>      
     </ProjectReference>
    </ItemGroup>
    

    我怎样才能引用一个完全不创建asm文件的静态库???我怎么能控制这件事。

    我们正在使用Visual Studio 2015。我们使用MSBuild进行构建,尽管这是伴随而来的。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Martin Kosicky    7 年前

    啊,我明白了。链路时间优化和整个程序优化已启用。当lto被禁用但整个程序选项被启用时,程序自动启用lto。副作用是.asm文件不是在库链接期间生成的,而是在库链接到最终可执行文件时生成的。因此,禁用lto整个程序优化解决了这个问题