file(GET_RUNTIME_DEPENDENCIES): CMake install convert upper case name to lower case
Hello, i encountered some unusual behaviour. For example, I have something like that
function(INSTALL_ARM_SERVICE RUNTIME_OUTPUT_DIRECTORY SERVICE_NAME)
install(CODE "set(PROJECT_EXECUTABLE \"${RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/${SERVICE_NAME}${CMAKE_EXECUTABLE_SUFFIX}\")")
install(CODE "set(PROJECT_NAME \"${SERVICE_NAME}\")")
set(INSTALL_PROJECT_PATH ${CMAKE_BUILD_TYPE})
install(CODE "set(INSTALL_PROJECT_PATH \"${INSTALL_PROJECT_PATH}\")")
install(
TARGETS ${SERVICE_NAME} OPTIONAL
LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${INSTALL_PROJECT_PATH}
ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/${INSTALL_PROJECT_PATH}
RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/${INSTALL_PROJECT_PATH}
)
INSTALL(FILES ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} DESTINATION ${CMAKE_INSTALL_PREFIX}/${INSTALL_PROJECT_PATH} COMPONENT Libraries)
install(FILES ${CMAKE_SOURCE_DIR}/${SERVICE_NAME}.json DESTINATION ${CMAKE_INSTALL_PREFIX}/${INSTALL_PROJECT_PATH})
if (WIN32)
install(
CODE [[
file(GET_RUNTIME_DEPENDENCIES
PRE_EXCLUDE_REGEXES
"api-ms-*"
POST_EXCLUDE_REGEXES
".*system32/.*\\.dll"
DIRECTORIES
"$<TARGET_PROPERTY:${SERVICE_NAME},LINK_DIRECTORIES>"
${QT_BIN_DIR}
RESOLVED_DEPENDENCIES_VAR RES
UNRESOLVED_DEPENDENCIES_VAR UNRES
CONFLICTING_DEPENDENCIES_PREFIX CONFLICTING_DEPENDENCIES
EXECUTABLES ${PROJECT_EXECUTABLE}
)
message("\n\nFound dependencies :")
foreach(DEP ${RES})
message("${DEP}")
endforeach()
message("\n\nNot found dependencies :")
foreach(DEP ${UNRES})
message("${DEP}")
endforeach()
foreach(_file ${RES})
file(INSTALL
DESTINATION "${CMAKE_INSTALL_PREFIX}/${INSTALL_PROJECT_PATH}"
TYPE SHARED_LIBRARY
#TODO requires 3.15+
#FOLLLOW_SYMLINK_CHAIN
FILES "${_file}"
)
endforeach()
]])
endif()
endfunction()
But after install phase
foreach(_file ${RES})
file(INSTALL
DESTINATION "${CMAKE_INSTALL_PREFIX}/${INSTALL_PROJECT_PATH}"
TYPE SHARED_LIBRARY
#TODO requires 3.15+
#FOLLLOW_SYMLINK_CHAIN
FILES "${_file}"
)
endforeach()
dll was copied but it names was converted to lower case. Is this ok? How can I fix it?
cmake version 3.20.5
Edited by Brad King