gpt4 book ai didi

c++ - 使用CMake install 命令应该将可执行资源文件安装到哪里?

转载 作者:行者123 更新时间:2023-12-02 10:24:29 24 4
gpt4 key购买 nike

我现在开始掌握 CMake 的窍门,但有一个问题基本上难倒了我。假设我有一个项目结构如下:

.
├── CMakeLists.txt
└── src
├── CMakeLists.txt
├── main.cpp
└── resources
└── text_file.txt

在此示例中,main.cpp 依赖于 resources/text_file.txt,包括使用 std::ifstream fileReader{ "text_file.txt"} 。因此,在我的顶级 CMakeLists.txt 文件中,我有以下行:

file(COPY src/resources DESTINATION ${PROJECT_BINARY_DIR}/src)

此命令适用于构建目录和我的所有资源(我构建的应用程序可以访问文本文件、图像等)。但是,对于使用 install 命令和 make install 进行安装而言,这并不真正有效。例如,如果我想安装可执行文件,我可以使用:

install(TARGETS test_executable DESTINATION bin)

其中 test_executable 是可执行文件的名称。另一方面,安装这个资源文件夹似乎有点棘手。我最初的想法是将此文件夹也“安装”到 bin 中,以便我的可执行文件可以访问它,但后来我认为这是个坏主意,因为:

  1. bin 文件夹用于存放可执行文件,而不是资源文件。
  2. (我对此不太确定)resources 是包含资源的文件夹的一个相当常见的名称,因此将它们放在 bin 中可能会有风险。如果最佳做法将资源放在 bin 中的 resources 文件夹中,那么这对其他应用程序来说不是一个问题吗? resources 文件夹? (我意识到如果我只是重命名文件夹这不会有问题,但这不是重点)

这引出了我的问题:当我使用 CMake 时,我的资源文件的安装位置应该是什么,以便我构建的可执行文件可以使用上面显示的文件路径访问它们?它应该在bin,或者是否有其他文件夹专用于此角色?具有大量资源文件的视频游戏如何处理这个问题?

最佳答案

好吧,我做了更多的研究,找到了 this AskUbuntu answer ,表示相关资源文件存放在/usr/share/usr/local/share,用于存放平台无关文件。

为了获得这个路径,大多数应用程序配置一个脚本,根据平台将其存储在一个变量中。

关于c++ - 使用CMake install 命令应该将可执行资源文件安装到哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49329552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com