什么是CMake等同于.vcxproj <ReferenceOutputAssembly> false </ReferenceOutputAssembly>

时间:2019-09-10 13:38:55

标签: visual-studio cmake dependencies

用CMake术语正确解释Visual Studio项目文件的ReferenceOutputAssembly标签是什么?

  <ItemGroup>
    <ProjectReference Include="..\commonStuff\commonStuff.vcxproj">
      <Project>{fffffff-fffff-ffff-ffff-ffffff}</Project>
      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
    </ProjectReference>
  </ItemGroup>

假设:

add_dependencies(${PROJECT_NAME}
    commonStuff
)

1 个答案:

答案 0 :(得分:0)

此Visual Studio项目元数据元素用于指定是否将引用项目的输出复制到包含引用项目输出的目录中。这是简短的article,解释了典型的用例。如果未设置ReferenceOutputAssembly,则默认行为是true(请参见this答案)。

由CMake根据依赖项是托管目标(即C#目标还是使用{{1编译的目标)来设置Visual Studio项目文件中的ReferenceOutputAssembly元素}})。没有使用CMake命令进行设置的明确方法。

如果以下条件无一个适用于目标,则/clr将设置为ReferenceOutputAssembly

  • 依赖关系是C#目标
  • 依赖性是CLR的目标
  • 相关性被标记为WinRT组件(请参见VS_WINRT_COMPONENT

您可以看到CMake如何设置CMake源中的false元素。将其设置为ReferenceOutputAssembly的逻辑是here,而对于.NET / C#目标,将其设置为false的逻辑是here。在某些情况下(例如,包含非托管C ++和C ++ / CLI的CMake项目),CMake不会填充此字段。