CMake: Fix tst_qlibrary to work on macOS with debug builds

The test expects the helper libraries to contain the .dylib suffix
rather than .so.

Replace glob copying of the libraries (which depends on the underlying
shell) with manual copy calls.
This also ensures the libraries don't contain a _debug postfix in the
file name even in a debug build, which would break the tests.

Amends f8c1909320313c8a9c03661d8fe77728bde6556a
Amends 1dff26dd9539feb40767b7761c5339085ad74dbf

Change-Id: I20361c33c4a1b9dd4b5273fcdb8cc79c9f266327
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
This commit is contained in:
Alexandru Croitor 2022-08-30 17:46:51 +02:00
parent d86ab16a86
commit cd4a3a1dc7
2 changed files with 41 additions and 21 deletions

View File

@ -30,17 +30,17 @@ if(WIN32)
set_property(TARGET mylib PROPERTY PREFIX "") set_property(TARGET mylib PROPERTY PREFIX "")
endif() endif()
if(UNIX)
if (MACOS) if(APPLE)
add_custom_command(TARGET mylib POST_BUILD add_custom_command(TARGET mylib POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different COMMAND ${CMAKE_COMMAND} -E copy_if_different
$<TARGET_FILE:mylib> $<TARGET_FILE:mylib>
"${CMAKE_CURRENT_BINARY_DIR}/../" "${CMAKE_CURRENT_BINARY_DIR}/../libmylib.1.0.0.dylib"
COMMAND ${CMAKE_COMMAND} -E copy_if_different COMMAND ${CMAKE_COMMAND} -E create_symlink
"${CMAKE_CURRENT_BINARY_DIR}/*dylib" "libmylib.1.0.0.dylib"
"${CMAKE_CURRENT_BINARY_DIR}/../") "${CMAKE_CURRENT_BINARY_DIR}/../libmylib.1.dylib"
elseif (UNIX) VERBATIM)
if (NOT ANDROID) elseif(NOT ANDROID)
add_custom_command(TARGET mylib POST_BUILD add_custom_command(TARGET mylib POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different COMMAND ${CMAKE_COMMAND} -E copy_if_different
$<TARGET_FILE:mylib> $<TARGET_FILE:mylib>

View File

@ -43,7 +43,27 @@ if(WIN32)
endif() endif()
if(UNIX) if(UNIX)
if(NOT ANDROID) if(APPLE)
add_custom_command(TARGET mylib2 POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
$<TARGET_FILE:mylib2>
"${CMAKE_CURRENT_BINARY_DIR}/../system.qt.test.mylib.so.dylib"
COMMAND ${CMAKE_COMMAND} -E copy_if_different
$<TARGET_FILE:mylib2>
"${CMAKE_CURRENT_BINARY_DIR}/../libmylib.2.0.0.dylib"
COMMAND ${CMAKE_COMMAND} -E create_symlink
"libmylib.2.0.0.dylib"
"${CMAKE_CURRENT_BINARY_DIR}/../libmylib.2.dylib"
COMMAND ${CMAKE_COMMAND} -E remove
"${CMAKE_CURRENT_BINARY_DIR}/../libmylib.dylib"
COMMAND ${CMAKE_COMMAND} -E create_symlink
"libmylib.2.0.0.dylib"
"${CMAKE_CURRENT_BINARY_DIR}/../libmylib.dylib"
COMMAND ${CMAKE_COMMAND} -E create_symlink
"libmylib.2.0.0.dylib"
"${CMAKE_CURRENT_BINARY_DIR}/../libmylib.so2.dylib"
VERBATIM)
elseif(NOT ANDROID)
add_custom_command(TARGET mylib2 POST_BUILD add_custom_command(TARGET mylib2 POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different COMMAND ${CMAKE_COMMAND} -E copy_if_different
$<TARGET_FILE:mylib2> $<TARGET_FILE:mylib2>