gpt4 book ai didi

cmake - 在 CMake 中从变量中剥离路径

转载 作者:行者123 更新时间:2023-12-04 03:27:48 24 4
gpt4 key购买 nike

有没有办法从我的 CMakeLists.txt 中删除变量的路径?说我有一个变量

RUNTIME_DEPENDENCIES = {
src/frontend/solve.py
src/frontend/other.py
}

这些运行时依赖项被复制到可执行文件的 bin 以供在执行期间使用,但按照我复制它们的方式,它们出现在各自的文件夹中。所以我的构建文件夹看起来像
    build
| \
src executable
|
frontend
/ \
other.py solve.py

我希望文件夹只包含
           build
/ / \
executable other.py solve.py

这是使用的实际复制命令:
#copy runtime deps
add_custom_target(copy_runtime_dependencies ALL)
foreach(RUNTIME_DEPENDENCY ${RUNTIME_DEPENDENCIES})
add_custom_command(TARGET copy_runtime_dependencies POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_SOURCE_DIR}/${RUNTIME_DEPENDENCY}
$<TARGET_FILE_DIR:${EXECUTABLE_NAME}>/${RUNTIME_DEPENDENCY})
endforeach()

我意识到我可以简单地将上面的第 5 行更改为
${CMAKE_SOURCE_DIR}/src/frontend/${RUNTIME_DEPENDENCY}

但如果我在 src/frontend 之外有多个依赖项我不想在我的 CMakeLists.txt 中编写多个单独的副本语句

最佳答案

函数get_filename_component做这个:

get_filename_component(barename ${RUNTIME_DEPENDENCY} NAME)
barename是保存路径删除的文件名的输出变量。例如:
get_filename_component(barename "src/frontend/solve.py" NAME)
message(STATUS ${barename})

会打印 solve.py

关于cmake - 在 CMake 中从变量中剥离路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28201884/

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