![](/img/trans.png)
[英]Android NDK path variable for “strip” command in CMake build tool chain
[英]Strip path off of variable in CMake
有没有办法从我的 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
$<TARGET_FILE_DIR:${EXECUTABLE_NAME}>/../
从 CMake 3.20 开始,您可以使用新的cmake_path
命令进行路径操作,以获取每个路径的FILENAME
组件:
cmake_path(GET <path-var> FILENAME <out-var>)
对于您的示例,您可以执行以下操作:
cmake_path(GET RUNTIME_DEPENDENCY FILENAME MY_FILE_NAME)
此命令取代get_filename_component
命令。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.