[英]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.