как указать файлы ресурсов C # / WPF в cmake - PullRequest
0 голосов
/ 13 февраля 2019

Мне нужно указать файлы ресурсов для c-sharp / WPF через cmake , это файлы изображений, которые необходимо поставлять с графическим интерфейсом приложения.

В Visual Studio вы просто: выберитеimage -> Advanced -> Build Action -> выберите «Resource», это позволяет получить доступ к изображениям непосредственно в 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

Мой текущий 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
)

1 Ответ

0 голосов
/ 06 июня 2019

У меня была похожая проблема с моим проектом.Чтобы решить эту проблему, мне пришлось явно добавить файл ресурса изображения в 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.Затем при проверке свойств файла PNG в Visual Studio для параметра «Действие построения» было установлено значение «Ресурс».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...