如何在cmake中指定C#/WPF资源文件

2024-03-22

我需要指定资源文件通过 cmake 的 c-sharp / WPF,这些是需要随应用程序 GUI 一起提供的图像文件。

在 Visual Studio 中您只需: 选择图像 -> 高级 -> 构建操作 -> 选择“资源”,这使得可以直接在 xaml 中访问图像,例如:

<Image Source="png/login.png"/>

完成后供参考在VS2017中手动这会将以下行添加到project.csproj:

<ItemGroup>
    <Resource Include="png/login.png">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Resource>
  </ItemGroup>

那么如何在cmake中指定资源文件呢?

我尝试了这里的建议,但无济于事:https://gitlab.kitware.com/cmake/cmake/issues/17368 https://gitlab.kitware.com/cmake/cmake/issues/17368

我当前的 CMakeLists.txt 如下所示:

cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR)

project(sampleApp VERSION 2.2.0 LANGUAGES CSharp)

include(CSharpUtilities)

add_executable(sampleApp app.config                     
                App.xaml
                App.xaml.cs                 
                MainWindow.xaml
                MainWindow.xaml.cs
                Styles.xaml
                Properties/AssemblyInfo.cs
                Properties/Resources.Designer.cs
                Properties/Resources.resx
                Properties/Settings.Designer.cs
                Properties/Settings.settings                
                 )

target_link_libraries(sampleApp PRIVATE otherLibrary)
#
# Tried this setting (does not work)
set(RESOURCES "png/login.png")
set_property(SOURCE ${RESOURCES} PROPERTY VS_TOOL_OVERRIDE "Resource")

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

csharp_set_xaml_cs_properties(
                App.xaml
                App.xaml.cs
                MainWindow.xaml
                MainWindow.xaml.cs 
                Styles.xaml)


target_compile_options(sampleApp PRIVATE "/langversion:6")
target_compile_options(sampleApp PRIVATE "/unsafe")

set_property(SOURCE App.xaml PROPERTY VS_XAML_TYPE "ApplicationDefinition")
set_property(TARGET sampleApp PROPERTY VS_DOTNET_TARGET_FRAMEWORK_VERSION "v4.6.1")
set_target_properties(sampleApp PROPERTIES WIN32_EXECUTABLE TRUE)

set_property(TARGET sampleApp PROPERTY VS_DOTNET_REFERENCES
"System"
"System.Configuration" 
"System.Configuration.Install" 
"System.Data" 
"System.Drawing" 
"System.Management" 
"System.Security" 
"System.Transactions" 
"System.Web" 
"System.Xml" 
"System.Core" 
"System.Xaml"
"System.Xml.Linq" 
"System.Data.DataSetExtensions" 
"PresentationCore" 
"PresentationFramework" 
"Microsoft.CSharp" 
"Microsoft.Office.Interop.Excel"
"WindowsBase" 
)

#
# Install
#
install(TARGETS sampleApp EXPORT sampleAppTargets
  RUNTIME DESTINATION sampleApp/
  ARCHIVE DESTINATION sampleApp/
  LIBRARY DESTINATION sampleApp/
)
install(
  FILES
    ${RESOURCES}
  DESTINATION
    sampleApp/
  COMPONENT
    Devel
)

我的项目也有类似的问题。为了解决这个问题,我必须显式添加图像资源文件add_executable使用 CMake。所以尝试这样的事情:

set(IMAGE_RESOURCE "png/login.png")

# Include the resource here with the other source files.
add_executable(sampleApp app.config                     
    App.xaml
    App.xaml.cs                 
    MainWindow.xaml
    MainWindow.xaml.cs
    Styles.xaml
    Properties/AssemblyInfo.cs
    Properties/Resources.Designer.cs
    Properties/Resources.resx
    Properties/Settings.Designer.cs
    Properties/Settings.settings
    ${IMAGE_RESOURCE}                
)

# Then set the file property.
set_property(SOURCE ${IMAGE_RESOURCE} PROPERTY VS_TOOL_OVERRIDE "Resource")

这让 CMake 将图像文件拉入我的 Visual Studio 项目中。然后,在 Visual Studio 中检查 PNG 文件属性后,“构建操作”被设置为“资源”。

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

如何在cmake中指定C#/WPF资源文件 的相关文章

  • Cocoa 常量名称中的“k”代表什么[重复]

    这个问题在这里已经有答案了 可能的重复 Apple 的 API 中的 k 前缀表示什么 https stackoverflow com questions 675816 what does the k prefix indicate in
  • MVC 2视图显示错误的模型信息

    我在一个项目中使用 MVC 2 但我遇到了视图问题 在控制器中我有代码 return View calendarDay 如果我调试这一行并检查 calendarDay 它会告诉我 calendarDay Id 属性等于 2 在视图中我有一些
  • 在 C# 中格式化 Resharper 属性的支持字段

    有没有办法控制 Resharper 放置其支持字段的位置 目前 它试图让他们在班级中名列前茅 我希望他们能去到酒店的正上方 还没有
  • 委托 System.Action 不接受 1 个参数

    那个行动 readonly Action execute public RelayCommand Action execute this execute null public RelayCommand Action execute Fun
  • 使用 C 序列化 double 和 float

    如何在 C 中序列化双精度数和浮点数 我有以下用于序列化短整型 整数和字符的代码 unsigned char serialize char unsigned char buffer char value buffer 0 value ret
  • Motif 库的水平绘制的 RowColumn 类 (C)?

    我正在使用 Motif Library 来完成我的工作 如果有人不熟悉这个库 您可以在这里找到文件列表https packages ubuntu com xenial amd64 libmotif dev filelist https pa
  • 具有 Nhibernate 设计问题的领域模型

    我正在尝试进入 DDD with C 世界 我使用NHibernate作为我的ORM工具 因此尝试开发一个PI Persistence Ignorance 模型 但是 在我的一些实体 表示为 POCOS 中 我的属性设置器中有业务规则 例如
  • C#:如何计算纵横比

    我对编程比较陌生 我需要根据给定尺寸 例如 axb 计算纵横比 16 9 或 4 3 我如何使用 C 来实现这一点 任何帮助将不胜感激 public string AspectRatio int x int y code am lookin
  • 在实体框架中不使用 Dispose 或 using()

    我一路上正在编写一个网络应用程序并学习实体框架 如果我做错了什么 我很好奇 我在查询时没有使用过 dispose 或 using 语句 我的存储库示例 public User GetUserById int sessionId var us
  • 如何在运行时统一捕捉两个对象?

    这是 3D 模型 我想将另一个像这样的模型连接到顶部的银色连接器 并将另一个模型连接到右侧 所以请帮助我捕捉它 https i stack imgur com qoWwl png我想知道如何在运行时将两个 3D 对象对齐在一起 即 在 玩
  • 静态成员函数中的封闭类的 C++ 类型

    我认为这是完全不可能的 但如果呢 在任何版本的 C 中 是否有可能以某种方式获取静态成员函数中封闭类的类型 class Impossible public static void Fun typedef Impossible Enclosi
  • OpenFileDialog 中的多个文件扩展名

    如何在一组中使用多个文件扩展名OpenFileDialog 我有Filter BMP bmp GIF gif JPG jpg PNG png TIFF tiff 我想创建组 以便 JPG 为 jpg 和 jpeg TIFF 为 tif 和
  • 设置了 OFN_ALLOWMULTISELECT 标志的 GetOpenFileName()

    我正在尝试使用 GetOpenFileName 通用对话框调用来弹出打开对话框并允许用户选择多个文件 我设置了 OFN ALLOWMULTISELECT 标志 并设置了 OFN EXPLORER 因此我得到了 新样式 文件选择框 当我设置
  • 获取上下文菜单的控制

    我有一个如下所示的上下文菜单 A 1 2 3 选择 1 2 或 3 后 我需要访问调用上下文菜单的对象 意思是如果这是 textbox1 的上下文菜单 那么我需要访问该对象 我该怎么做 忘了说了 这是一个WPF应用程序 所以我使用 Syst
  • 将变量传递给 SSIS 中的项目参数

    我是这个网络的新手 希望我能找到这个问题的答案 我有一个 SSIS 项目 其中包含多个使用项目参数的包 我正在尝试更新项目参数 例如 PeriodStart 2014年5月31日 我找不到动态写入项目参数的方法 我在 4 0 框架中使用 V
  • 成员函数的Decltype

    class A int f int x int j return 2 decltype f p 给我错误 error decltype cannot resolve address of overloaded function 我不明白为什
  • 在方法签名中使用 new 关键字通常只是为了可读性吗?

    我读过关于new关键词在方法签名中并看到了下面的例子this https stackoverflow com questions 1014295 c sharp new keyword in method signature发帖了 但还是不
  • 找出用户属于哪些组

    我有一个刚刚创建的 Windows 用户帐户 以 XYZ 为例 此 XYZ 属于我在计算机管理 gt 本地用户和组中创建的用户组和自定义组 因此 在属性中我看到该用户属于 2 个组 现在我想获取这些组并显示它们 有什么建议么 我已经这样做了
  • Interlocked.CompareExchange 可以抛出 NullReferenceException 吗?

    From https msdn microsoft com en us library bb297966 v vs 110 aspx https msdn microsoft com en us library bb297966 v vs
  • 如何用纯色填充位图?

    我需要使用唯一的 RGB 颜色创建 24 位位图 分辨率 100x100 像素 并将生成的图像保存到磁盘 我目前使用的是SetPixel http msdn microsoft com en us library 6c7eyzyb aspx

随机推荐