有没有办法可以在我的CMakeLists.txt中删除变量的路径?说我有一个变量
RUNTIME_DEPENDENCIES = {
src/frontend/solve.py
src/frontend/other.py
}
Run Code Online (Sandbox Code Playgroud)
这些运行时依赖项被复制到bin,以便在执行期间使用可执行文件,但是按照我复制它们的方式,它们出现在各自的文件夹中.所以我的构建文件夹看起来像
build
| \
src executable
|
frontend
/ \
other.py solve.py
Run Code Online (Sandbox Code Playgroud)
我想要简单地包含文件夹
build
/ / \
executable other.py solve.py
Run Code Online (Sandbox Code Playgroud)
这是使用的实际复制命令:
#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()
Run Code Online (Sandbox Code Playgroud)
我意识到我可以简单地将上面的第5行更改为
${CMAKE_SOURCE_DIR}/src/frontend/${RUNTIME_DEPENDENCY}
Run Code Online (Sandbox Code Playgroud)
但是在我有多个依赖关系的情况下,我src/frontend不想在我的CMakeLists.txt中编写多个单独的复制语句
Pet*_*ter 10
该功能get_filename_component执行此操作:
get_filename_component(barename ${RUNTIME_DEPENDENCY} NAME)
Run Code Online (Sandbox Code Playgroud)
barename是保存文件名并删除路径的输出变量.例如:
get_filename_component(barename "src/frontend/solve.py" NAME)
message(STATUS ${barename})
Run Code Online (Sandbox Code Playgroud)
会打印 solve.py
| 归档时间: |
|
| 查看次数: |
5134 次 |
| 最近记录: |