我是Cmake和MSBuild的新手。我已经阅读了多篇关于在Cmake中链接库的帖子。有一两个人谈论链接项目,但他们主要是关于C ++项目。我的问题是特定于将一个C#项目的引用添加到另一个C#项目,其中两个项目都是使用CMake生成的,并且是同一个.Net解决方案的一部分,并且使用MSBuild在生成后成功构建项目。 我有两个使用cmake生成的C#项目。 Projects的当前文件夹结构是:
ProjA
--- cmake.txt
--- projA.csproj.template
ProjB
--- Cmake.txt
--- projB.csproj.template
Cmake将cmake.txt用于项目,而项目又使用csproj文件生成C#项目ProjectA和Project B. Fyi,C#项目的* .cs文件是使用Swig生成的。我没有详细介绍它生成的* .cs文件是正确的。
项目B具有项目A中所需的类型。因此,我们希望将项目B的参考添加到项目A中。
为了做到这一点,我首先尝试将Project B的引用添加到ProjectA csproj文件中。
<ItemGroup>
<ProjectReference Include="..\..\FolderB\ProjectB\ProjectB.csproj">
<Project>{PROJ GUID}</Project>
<Name>ProjectB</Name>
</ProjectReference>
</ItemGroup>
我通过打开cmake生成的.Net解决方案并手动构建它来测试更改。变化很好。但是,当我使用cmake生成这些项目然后使用MSbuild构建.Net解决方案和项目时,构建失败。 我得到的构建错误(对于项目A)是:
找不到类型或命名空间名称(您是否缺少using指令或程序集引用?
命名空间中不存在类型或命名空间名称(您是否缺少程序集引用?)
当我打开生成的C#项目并单独构建它时,项目构建得很好,没有任何构建错误。
通过阅读错误,似乎Cmake仍然无法将项目B的引用添加到项目A.所以,接下来除了在ProjectA csproj文件中添加项目B的引用之外,我尝试在CMake中添加ProjectB的引用。项目A的txt。我通过将命令target_link_libraries(ProjectAName "ProjectBName")
添加到cmake.txt文件来完成此操作。
我尝试的另一件事是通过include_external_msproject命令(在cmake.txt中)添加对项目A的引用,即:
include_external_msproject(
ProjectAName
${csprojfileName}
TYPE "${CS_GUID}"
ProjectB
)
构建仍然失败。
让我知道这些尝试是否存在任何问题,以及可以进行哪些进一步的更改,以便CMake为项目A生成正确的信息,以便在构建时MSBuild知道项目A引用了项目B.