如何使用CMake构建C#DLL?

时间:2019-03-07 08:45:09

标签: c# cmake

我有生以来第一次使用CMake构建C#DLL。此CMake适合较大的工作流程。否则,我将使用Visual Studio 2017进行创作和调试。

到目前为止,我的CMakeLists.txt看起来像这样,它是从我可以找到的几个示例中进行查看,剪切和粘贴的结果。

array_walk($myarray,'test_print');
function test_print($value, $key) {
    echo "$key is $value\n";
}

此外,尝试构建会导致对.csprog文件的更改,其中

  • 表格从编号为no的表格中消失,并伴随相应的构建错误 更长的时间
  • 输出类型从cmake_minimum_required(VERSION 3.8) project("galapagos" CSharp) add_executable("galapagos" tortoise1.cs tortoise2.cs tortoiseForm.cs packages.config runTortoiseReport.cs ... etc ... tortoiseTest.cs) set_property(TARGET "galapagos" PROPERTY DOTNET_TARGET_FRAMEWORK_VERSION "v4.6.1") set_property(TARGET "galapagos" PROPERTY WIN32_EXECUTABLE FALSE) set_property(TARGET "galapagos" PROPERTY VS_CONFIGURATION_TYPE ClassLibrary) set_property(TARGET "galapagos" PROPERTY VS_DOTNET_REFERENCES "Microsoft.CSharp" "PresentationCore" "PresentationFramework" "System" "System.Core" "System.Data" "System.Data.DataSetExtensions" "System.Windows.Forms" "System.Net.Http" "System.Xaml" "System.Xml" "System.Xml.Linq" "WindowsBase" .. etc ... "C:/galapagos/galapagos.dll" ) 更改为 Class Library

消失的表单 有时 可以通过从项目中排除相应的文件,然后重新添加来重新出现。

没有生成DLL。现在,将应用程序更改为Console Application的.csprog文件的更改是很奇怪的。

显然,

Console Application

具有与

相同的效果
set_property(TARGET "galapagos" PROPERTY VS_CONFIGURATION_TYPE BeefChowMein)

这可能说明CMake无法理解set_property(TARGET "galapagos" PROPERTY VS_CONFIGURATION_TYPE ClassLibrary) ,并假定它是默认的ClassLibrary

由于构建过程显然已经破坏了表单定义,所以我现在遇到了很多类似的错误

ConsoleApplication

否则该项目将在VS秒之前正确构建。

VS和CMake是否存在共存问题?

我还缺少什么?

1 个答案:

答案 0 :(得分:0)

请添加ADD_LIBRARY,而不要使用add_executable。

ADD_LIBRARY(${PROJECT_NAME} SHARED
    ..sources..
)