gpt4 book ai didi

cmake - CMake:添加自定义资源以建立目录

转载 作者:行者123 更新时间:2023-12-03 20:39:21 24 4
gpt4 key购买 nike

我正在制作一个小程序,需要运行图像文件foo.bmp
所以我可以编译程序但要运行它,我必须手动将foo.bmp复制到“ build”子目录中

我应该在CMakeLists.txt中使用什么命令来在程序编译时自动添加foo.bmp来建立子目录?

最佳答案

为此,您应该使用add_custom_command为生成目录中所需的文件生成生成规则。然后将目标中的依赖项添加到这些文件中:CMake仅在目标需要时才构建某些东西。

如果您不是从源目录构建文件,也应确保仅复制文件。

像这样:

project(foo)

cmake_minimum_required(VERSION 2.8)

# we don't want to copy if we're building in the source dir
if (NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR)

# list of files for which we add a copy rule
set(data_SHADOW yourimg.png)

foreach(item IN LISTS data_SHADOW)
message(STATUS ${item})
add_custom_command(
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${item}"
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/${item}" "${CMAKE_CURRENT_BINARY_DIR}/${item}"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${item}"
)
endforeach()
endif()

# files are only copied if a target depends on them
add_custom_target(data-target ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/yourimg.png")


在这种情况下,我将使用对yourimg.png文件具有依赖性的“ ALL”自定义目标来强制复制,但是您也可以从现有目标之一添加依赖性。

关于cmake - CMake:添加自定义资源以建立目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17018477/

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