使用 CMake 在同一解决方案中创建 C# 和 C++/CLR 项目(CMake 面向 Visual Studio)

2023-12-11

我想使用 CMake 在 MSVC 中创建一个解决方案,该解决方案具有两个项目(在 CMake 词汇中,一个 C# 执行程序和一个 C++/CLR 库)。

我怎样才能做到这一点?我发现的所有示例都是关于 CMake 中的一种类型的项目(全部为 C++ 或 C#)。

澄清:

如果我想使用 CMake 创建一个 C++/CLR 项目,我可以编写如下代码:

cmake_minimum_required (VERSION 3.5)

project (TestCppClr)

if (NOT MSVC)
    message(FATAL_ERROR "This CMake files only wirks with MSVC.")
endif(NOT MSVC)


ADD_EXECUTABLE(testCppClr "${CMAKE_SOURCE_DIR}/main.cpp")
set_target_properties(testCppClr PROPERTIES COMMON_LANGUAGE_RUNTIME "")

如果我想创建一个针对 C# 的项目,我可以编写如下内容:

cmake_minimum_required (VERSION 3.5)

project(Example VERSION 0.1.0 LANGUAGES CSharp)

if (NOT MSVC)
    message(FATAL_ERROR "This CMake files only wirks with MSVC.")
endif(NOT MSVC)


add_executable(Example
App.config
App.xaml
App.xaml.cs
MainWindow.xaml
MainWindow.xaml.cs

Properties/AssemblyInfo.cs
Properties/Resources.Designer.cs
Properties/Resources.resx
Properties/Settings.Designer.cs
Properties/Settings.settings)

我找不到任何方法来组合这两个 CMake 文件,因此我可以在 C++/CLR 中创建一个可执行文件,并在 C# 中创建另一个项目。

有什么办法可以做到这一点吗?


你当然可以两者兼得C++/CLI和 C# 在同一个 CMake 项目中 - 只需在调用时启用两种语言(C++ 和 C#)project().

cmake_minimum_required (VERSION 3.5)

# Enable both C++ and C# languages.
project (TestCSharpAndCppClr VERSION 0.1.0 LANGUAGES CXX CSharp)

if(NOT MSVC)
    message(FATAL_ERROR "This CMake files only works with MSVC.")
endif(NOT MSVC)

# Create your C++/CLI executable, and modify its properties.
add_executable(testCppClr "${CMAKE_SOURCE_DIR}/main.cpp")
set_target_properties(testCppClr PROPERTIES COMMON_LANGUAGE_RUNTIME "")

# Create your C# executable.
add_executable(Example
App.config
App.xaml
App.xaml.cs
MainWindow.xaml
MainWindow.xaml.cs

Properties/AssemblyInfo.cs
Properties/Resources.Designer.cs
Properties/Resources.resx
Properties/Settings.Designer.cs
Properties/Settings.settings)

请注意,您应该使用 CMake 3.8 或更高版本才能获得fullCMake 对 C# 的支持。此外,您的 C# 示例似乎缺少 CSharp 目标的一些基本 CMake 命令,如此所示response。您应该能够根据需要将这些命令添加到相同的CMakeLists.txt文件来修改 C# 源文件和 C# 目标的属性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 CMake 在同一解决方案中创建 C# 和 C++/CLR 项目(CMake 面向 Visual Studio) 的相关文章

随机推荐

  • 迭代解析 JSON 文件

    我有 1000 多个 JSON 文件 看起来像 name Some name part num 123456 other config Large amount of objects some more Large amount of ob
  • iOS UIPopoverController 透明度/alpha

    我正在制作一个 iPad 应用程序 客户想要一个具有透明度 alpha 的弹出概览 他们给了我一个示例应用程序 可以找到屏幕截图here 我读过 UIPopoverController 是最难定制的东西 因为只有几个属性需要设置 LINK
  • MySQL TimeDiff 排除周末

    我一直在 MySQL 表上使用 TimeDiff 来获取两个字段 均为日期时间格式 之间的差异 这是我正在使用的查询 它也将持续时间限制为仅今年 SELECT username CONCAT FLOOR SUM HOUR TIMEDIFF
  • 如何在Struts 2中显示图像?

    我需要检索数据库中的行 并将图像保存在字节数组中 如何使用Strut2显示图像 我已经使用自定义结果显示了它 我传递了 id 并在数据库中对其进行了操作搜索 我的问题是如何多次调用它 我有一个检索所有行的操作 如何从列表操作中调用显示图像操
  • SQLAlchemy 中的 REGEXP_LIKE

    任何人都知道我如何在 SQLAlchemy 中使用 REGEXP LIKE 的等效项 例如 我希望能够执行以下操作 sa Session query sa Table filter sa Table field like regex to
  • 为什么在没有类型转换的情况下复合文字赋值不起作用

    我有一个关于 C 语言文字的问题 int a a is an integer that is assigned an integer literal 414 a 414 float b b is a float that is assign
  • 使用 broom 包整理地图时保留区域名称

    我正在使用栅格包中的 getData 函数来检索阿根廷地图 我想使用 ggplot2 绘制生成的地图 因此我使用 broom 包中的 tidy 函数转换为数据框 这工作正常 但我不知道如何保留联邦地区的名称 以便我可以在地图上使用它们 这是
  • 导入旧的 ES5 模块以在 ReactJS 组件中使用

    我正在尝试在新的 ReactJS 应用程序中使用 ES5 模块 并且我正在努力理解如何正确导入该模块 以便可以找到并执行其中的主要函数 我正在加载模块 import air datepicker 我知道我在这里做错了 而且对于一个没有适当导
  • Python 并排带有颜色的 matplotlib 箱线图

    我按照这个例子link关于如何创建带有颜色的箱线图 我一直在尝试不同的方法来将这些箱线图分开在两个不同的位置 而不是让它们重叠 但无济于事 如果我为它们指定不同的位置 它们将保持在 bp2 位置 如何将这两个箱线图并排放置 import m
  • 如何在同一个消费者组中运行两个控制台消费者?

    当我运行两个具有完全相同属性的 Kafka console consumers 实例 使用默认的 config consumer properties 时 我在两个实例上收到相同的消息 bin kafka console consumer
  • 使用 VBA 将 url 发送到活动 IE 窗口

    我正在使用 VBA 并在 Excel 中创建宏以向 IE 浏览器窗口发送信息或从 IE 浏览器窗口发送信息 我一直在使用 AppActivate 来关注某个 IE 页面 使用它的标题 效果很好 使用 SendKeys 将信息发送回浏览器并没
  • 如何使用 jquery if else 语句切换类?

    我想使用 jquery If Else 语句针对指定条件切换类 我的 Html 带有默认 cssclass horizontal div class my item horizontal div 现在我怎样才能在之间洗牌我的CSS类hori
  • Phonegap:安装适用于 iOS 的 BarcodeScanner 时出错

    当我尝试安装 iOS 版 BarcodeScanner 插件时 plugman install platform ios project Users amarruffo Documents Projects phonegap barcode
  • 如何在ggplot中标记堆叠直方图

    我正在尝试将相应的标签添加到直方图中条形图中的颜色 这是一个可重现的代码 ggplot aes displ data mpg geom histogram aes fill class binwidth 1 col black 此代码给出了
  • 无法使用“-”破折号访问 JSON 属性 [重复]

    这个问题在这里已经有答案了 当字符串具有破折号字符时 我无法从 json 对象检索值 profile id 1234 user id 6789 如果我尝试引用解析的jsonObj profile id它返回ReferenceError id
  • ASP.Net Core 3 远程证书在 MacO 上无效

    当我尝试使用 Identityserver4 调用 API 方法时 我之前在 Windows 上尝试过 但它仅在 Mac OS 中工作正常 我遇到了这个问题 我不知道发生了什么以及如何解决它 我可以访问 https localhost 60
  • C 中布尔表达式的返回值

    由于不值得一提的原因 我想知道布尔表达式是否有标准定义值 例如 int foo return bar gt 5 背景是我担心我们的团队将 TRUE 定义为与 1 不同的东西 并且我担心有人可能会这样做 if foo TRUE do stuf
  • ggplot2根据数据值填充颜色

    我希望能够根据数据框中存储的值设置 ggplot 填充颜色 下面的代码 几乎 是我想要做的 除了我不只是使用 fill MyColor 我希望代码实际使用 MyColor 字段中的 RRGGBB 十六进制值 df data frame An
  • 模拟器错误 UnparseableJsonResponse(“找不到字段。”)

    我已在 DialogFlow 控制台中使用 webhook 成功测试了应用程序的前几个意图 但在模拟器中进行测试时出现以下错误 UnparseableJsonResponse API 版本 2 无法解析 JSON 响应 带有 INVALID
  • 使用 CMake 在同一解决方案中创建 C# 和 C++/CLR 项目(CMake 面向 Visual Studio)

    我想使用 CMake 在 MSVC 中创建一个解决方案 该解决方案具有两个项目 在 CMake 词汇中 一个 C 执行程序和一个 C CLR 库 我怎样才能做到这一点 我发现的所有示例都是关于 CMake 中的一种类型的项目 全部为 C 或