【发布时间】:2013-03-15 20:39:04
【问题描述】:
序言:我正在尝试将我的 C# csproj 与我们的 C++ 和 C++/CLI 代码库 cmake 构建的其余部分集成。我收到了建议不要尝试这样做,因为 CMake 与 Visual Studio 中的 .NET 不能很好地配合,但是在实现了一些自定义之后,我觉得我已经很接近了。
我的部分自定义是使用 configure_file 命令在 CMake 时编辑 csproj 文件,根据正在发生的构建类型(例如 x86、x64)对其进行自定义。
问题是我使用了一些 ProjectReference 标签来引用 C++/CLI 项目:
<ProjectReference Include="..\..\WrapperProject\WrapperProject.vcproj">
<Project>{7BD6E175-CDD1-4F8D-A3B2-0AC862E62C03}</Project>
<Name>WrapperProject</Name>
</ProjectReference>
...并且 GUID 不能保持静态,因为只要重建 CMake 缓存,它们就会为项目更改(如果我弄错了,请纠正我)。
所以我想做的是在 CMake 时找到我们为这些项目计划的 GUID,并相应地编辑 vcproj 文件。
Google 告诉我人们可以使用“set_property”来设置 GUID,如下所示:
set_property(CACHE ${target_name}_GUID_CMAKE PROPERTY VALUE ${MY_GUID} )
...但我似乎无法找到等效的吸气剂。我尝试过这样的事情:
get_property(WRAPPER_GUID CACHE INTERNAL PROPERTY WrapperTargetName_GUID_CMAKE)
...没有运气。感谢您的帮助!
【问题讨论】:
-
既然可以从 CMake 设置固定的项目 GUID,你应该也可以编写固定的 ProjectReference 标签,对吧?