【问题标题】:CMake + UWP resources and source_groupCMake + UWP 资源和 source_group
【发布时间】:2017-01-22 17:28:20
【问题描述】:

我已成功设置我的项目以使用 CMake 构建 UWP 应用程序。但是,在处理资源时,似乎需要将它们作为源添加到add_executable 命令中,并在目标属性中设置为RESOURCE

所有资源文件都已复制到磁盘上所需的位置。但是,当我生成项目时,所有资源文件最终都位于项目结构的根文件夹中。我尝试添加 source_group 命令,类似于我对 .cpp/.h 源(位于“源文件”文件夹下)所做的操作,但这似乎没有效果。这是我的 CMake 中的相关部分(使用 CMake 3.6.1):

    set(ResourceFiles "Package.appxmanifest" "Logo.png" ... etc)
    source_group("Resource Files" FILES "${ResourceFiles}")
    add_executable(MyExe ${projectSources} ${ResourceFiles})
    set_target_properties(MyExe PROPERTIES RESOURCE "${ResourceFiles}")

这可能吗,还是我做错了什么?

【问题讨论】:

  • 您的意图是将资源文件添加到资源文件夹中吗?尝试使用这个:file(COPY "[your source file/folder]" DESTINATION "[your destination folder]")
  • 不,我认为您误解了这个问题。我已经对其进行了更新,非常清楚这是项目的结构,而不是我要修复的磁盘位置。
  • 我已经更新了我的答案。
  • 您找到合适的解决方案了吗?我面临同样的问题...谢谢。
  • 它现在对我有用,虽然我没有跟踪修复它的原因。我将我的 CMake 版本从 3.6 升级到了 3.8,可能就是这样。我还为所有这些项目添加了 VS_DEPLOYMENT_CONTENT=1,但现在删除它并不会重现我原来的错误。

标签: c++ cmake uwp


【解决方案1】:

我认为你做的一切都是对的。

但是,您的代码中存在一个小问题,而不是

source_group("Resource Files" FILES "${RESOURCE_FILES}")

应该是

source_group("Resource Files" FILES ${RESOURCE_FILES})

注意 RESOURCE_FILES 周围的 "" 使其无法工作。

如果您打算将资源文件放入某个资源文件夹中?

您可以尝试使用以下命令,

file(COPY "[your source file/folder]" DESTINATION "[your destination folder]"
file(GLOB asset_files "[your destination folder]")
source_group("assets" FILES ${asset_files})

让我知道它是否适合你。

【讨论】:

  • 您提议的更改不会解决问题。 CMake 将字符串解释为列表,只要它们以分号分隔,因此将其作为列表或字符串传递没有区别。
  • @MuertoExcobito,我指的是这个文件github.com/wpbest/cmake-win-store-app/blob/master/…,第 99 行,我发现是否使用分号确实会有所不同。
  • 为了让您免于怀疑,我尝试了它,正如预测的那样,它没有任何区别。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-26
  • 1970-01-01
  • 1970-01-01
  • 2012-01-01
  • 2018-04-27
  • 2019-04-30
相关资源
最近更新 更多