@@ -10,61 +10,76 @@ else()
1010 if (WIN32 AND CMAKE_BUILD_TYPE STREQUAL "Debug" )
1111 set (QTKEYCHAIN_LIBRARY_NAME "${QTKEYCHAIN_LIBRARY_NAME} d" )
1212 endif ()
13- include (ExternalProject )
14- ExternalProject_Add (qtkeychain_repo
15- GIT_REPOSITORY "https://github.com/frankosterfeld/qtkeychain.git"
16- GIT_TAG "7668a63a3669400223c5a563928ae042f499dbf4"
1713
18- SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR } /qtkeychain-src"
19- BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR } /qtkeychain-build"
20-
21- INSTALL_COMMAND ${CMAKE_COMMAND } -E copy_if_different <SOURCE_DIR >/qtkeychain/keychain.h <BINARY_DIR >/qtkeychain
22- CMAKE_ARGS -DBUILD_WITH_QT6:BOOL=ON
23- -DBUILD_TRANSLATIONS:BOOL=OFF
24- -DBUILD_TEST_APPLICATION:BOOL=OFF
25- -DBUILD_SHARED_LIBS:BOOL=ON
26- -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE }
27- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${CMAKE_OSX_DEPLOYMENT_TARGET}
28- CMAKE_CACHE_ARGS -DCMAKE_PREFIX_PATH:PATH=${Qt6_DIR}
29-
30- UPDATE_COMMAND ""
31- ALWAYS 0
32-
33- BUILD_BYPRODUCTS "<BINARY_DIR>/bin/${CMAKE_SHARED_LIBRARY_PREFIX }${QTKEYCHAIN_LIBRARY_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX } "
34- "<BINARY_DIR>/lib/${QTKEYCHAIN_LIBRARY_NAME} .lib"
35- )
36- ExternalProject_Get_Property (qtkeychain_repo SOURCE_DIR )
37- ExternalProject_Get_Property (qtkeychain_repo BINARY_DIR )
38- set (QTKEYCHAIN_SHARED_LIBRARY ${BINARY_DIR} /bin/${CMAKE_SHARED_LIBRARY_PREFIX }${QTKEYCHAIN_LIBRARY_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX } )
14+ set (QTKEYCHAIN_SHARED_LIBRARY
15+ "${CMAKE_CURRENT_BINARY_DIR } /qtkeychain-build/bin/${CMAKE_SHARED_LIBRARY_PREFIX }${QTKEYCHAIN_LIBRARY_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX } " )
3916 if (MSVC )
40- set (QTKEYCHAIN_LIBRARY ${BINARY_DIR} /lib/${QTKEYCHAIN_LIBRARY_NAME} .lib)
17+ set (QTKEYCHAIN_LIBRARY
18+ "${CMAKE_CURRENT_BINARY_DIR } /qtkeychain-build/lib/${QTKEYCHAIN_LIBRARY_NAME} .lib" )
4119 else ()
42- set (QTKEYCHAIN_LIBRARY ${QTKEYCHAIN_SHARED_LIBRARY} )
20+ set (QTKEYCHAIN_LIBRARY " ${QTKEYCHAIN_SHARED_LIBRARY} " )
4321 endif ()
4422 set (QTKEYCHAIN_LIBRARIES ${QTKEYCHAIN_LIBRARY} )
45- add_custom_target (qtkeychain )
46- if (WIN32 )
47- if (MSVC )
48- get_target_property (QT6_CORE_LOCATION Qt6::Core LOCATION)
49- get_filename_component (QTKEYCHAIN_WIN_DEPLOY_DEST "${QT6_CORE_LOCATION} " DIRECTORY )
50- else ()
51- set (QTKEYCHAIN_WIN_DEPLOY_DEST "${CMAKE_BINARY_DIR } /src/bin/" )
23+ set (QTKEYCHAIN_INCLUDE_DIR
24+ "${CMAKE_CURRENT_BINARY_DIR } /qtkeychain-build/qtkeychain/" PARENT_SCOPE )
25+ set (QTKEYCHAIN_LIBRARY_DIR
26+ "${CMAKE_CURRENT_BINARY_DIR } /qtkeychain-build/bin/" PARENT_SCOPE )
27+
28+ if (EXISTS "${QTKEYCHAIN_SHARED_LIBRARY} " )
29+ message (STATUS "QtKeychain already built: ${QTKEYCHAIN_SHARED_LIBRARY} " )
30+ add_custom_target (qtkeychain_repo )
31+ add_custom_target (qtkeychain )
32+ add_dependencies (qtkeychain qtkeychain_repo )
33+ else ()
34+ include (ExternalProject )
35+ ExternalProject_Add (qtkeychain_repo
36+ GIT_REPOSITORY "https://github.com/frankosterfeld/qtkeychain.git"
37+ GIT_TAG "7668a63a3669400223c5a563928ae042f499dbf4"
38+
39+ SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR } /qtkeychain-src"
40+ BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR } /qtkeychain-build"
41+
42+ INSTALL_COMMAND ${CMAKE_COMMAND } -E copy_if_different <SOURCE_DIR >/qtkeychain/keychain.h <BINARY_DIR >/qtkeychain
43+ CMAKE_ARGS -DBUILD_WITH_QT6:BOOL=ON
44+ -DBUILD_TRANSLATIONS:BOOL=OFF
45+ -DBUILD_TEST_APPLICATION:BOOL=OFF
46+ -DBUILD_SHARED_LIBS:BOOL=ON
47+ -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE }
48+ -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${CMAKE_OSX_DEPLOYMENT_TARGET}
49+ CMAKE_CACHE_ARGS -DCMAKE_PREFIX_PATH:PATH=${Qt6_DIR}
50+
51+ UPDATE_COMMAND ""
52+ BUILD_ALWAYS 0
53+
54+ BUILD_BYPRODUCTS "${QTKEYCHAIN_SHARED_LIBRARY} "
55+ "${CMAKE_CURRENT_BINARY_DIR } /qtkeychain-build/lib/${QTKEYCHAIN_LIBRARY_NAME} .lib"
56+ )
57+ add_custom_target (qtkeychain )
58+ if (WIN32 )
59+ if (MSVC )
60+ get_target_property (QT6_CORE_LOCATION Qt6::Core LOCATION)
61+ get_filename_component (QTKEYCHAIN_WIN_DEPLOY_DEST "${QT6_CORE_LOCATION} " DIRECTORY )
62+ else ()
63+ set (QTKEYCHAIN_WIN_DEPLOY_DEST "${CMAKE_BINARY_DIR } /src/bin/" )
64+ endif ()
65+ add_custom_command (
66+ OUTPUT "${QTKEYCHAIN_WIN_DEPLOY_DEST} "
67+ COMMAND ${CMAKE_COMMAND } -E echo "Copying QtKeychain DLL to runtime output directory"
68+ COMMAND ${CMAKE_COMMAND } -E copy_if_different "${QTKEYCHAIN_SHARED_LIBRARY} " "${QTKEYCHAIN_WIN_DEPLOY_DEST} "
69+ DEPENDS qtkeychain_repo
70+ COMMENT "Windows-only: copying ${QTKEYCHAIN_LIBRARY_NAME} DLL"
71+ )
72+ add_custom_target (qtkeychain_copy DEPENDS "${QTKEYCHAIN_WIN_DEPLOY_DEST} " )
73+ add_dependencies (qtkeychain qtkeychain_copy )
5274 endif ()
53- add_custom_command (
54- OUTPUT "${QTKEYCHAIN_WIN_DEPLOY_DEST} "
55- COMMAND ${CMAKE_COMMAND } -E echo "Copying QtKeychain DLL to runtime output directory"
56- COMMAND ${CMAKE_COMMAND } -E copy_if_different "${QTKEYCHAIN_SHARED_LIBRARY} " "${QTKEYCHAIN_WIN_DEPLOY_DEST} "
57- DEPENDS qtkeychain_repo
58- COMMENT "Windows-only: copying ${QTKEYCHAIN_LIBRARY_NAME} DLL"
59- )
60- add_custom_target (qtkeychain_copy DEPENDS "${QTKEYCHAIN_WIN_DEPLOY_DEST} " )
61- add_dependencies (qtkeychain qtkeychain_copy )
75+ add_dependencies (qtkeychain qtkeychain_repo )
6276 endif ()
63- add_dependencies (qtkeychain qtkeychain_repo )
6477
6578 message (STATUS "QtKeychain library: ${QTKEYCHAIN_LIBRARY} " )
6679 set (QTKEYCHAIN_LIBRARIES ${QTKEYCHAIN_LIBRARIES} PARENT_SCOPE )
6780 set (QTKEYCHAIN_LIBRARY ${QTKEYCHAIN_LIBRARY} PARENT_SCOPE )
68- set (QTKEYCHAIN_INCLUDE_DIR ${BINARY_DIR} /qtkeychain/ PARENT_SCOPE )
69- set (QTKEYCHAIN_LIBRARY_DIR ${BINARY_DIR} /bin/ PARENT_SCOPE )
81+ set (QTKEYCHAIN_INCLUDE_DIR
82+ "${CMAKE_CURRENT_BINARY_DIR } /qtkeychain-build/qtkeychain/" PARENT_SCOPE )
83+ set (QTKEYCHAIN_LIBRARY_DIR
84+ "${CMAKE_CURRENT_BINARY_DIR } /qtkeychain-build/bin/" PARENT_SCOPE )
7085endif ()
0 commit comments