FreeCAD
74 строки · 5.2 Кб
1macro(CopyLibpackDirectories)
2# Copy libpack dependency directories to build folder for user as part of overall build process
3if(FREECAD_COPY_DEPEND_DIRS_TO_BUILD)
4message(STATUS "Copying libpack dependency directories to build directory...")
5file(COPY ${FREECAD_LIBPACK_DIR}/bin/assistant.exe DESTINATION ${CMAKE_BINARY_DIR}/bin)
6file(COPY ${FREECAD_LIBPACK_DIR}/bin/qt.conf DESTINATION ${CMAKE_BINARY_DIR}/bin)
7file(COPY ${FREECAD_LIBPACK_DIR}/plugins/platforms DESTINATION ${CMAKE_BINARY_DIR}/bin)
8file(COPY ${FREECAD_LIBPACK_DIR}/plugins/imageformats DESTINATION ${CMAKE_BINARY_DIR}/bin)
9file(COPY ${FREECAD_LIBPACK_DIR}/plugins/iconengines DESTINATION ${CMAKE_BINARY_DIR}/bin)
10file(COPY ${FREECAD_LIBPACK_DIR}/plugins/sqldrivers DESTINATION ${CMAKE_BINARY_DIR}/bin)
11file(COPY ${FREECAD_LIBPACK_DIR}/plugins/styles DESTINATION ${CMAKE_BINARY_DIR}/bin)
12if(NOT FREECAD_LIBPACK_VERSION VERSION_GREATER_EQUAL "3.0.0")
13file(COPY ${FREECAD_LIBPACK_DIR}/plugins/printsupport DESTINATION ${CMAKE_BINARY_DIR}/bin)
14endif()
15if(FREECAD_LIBPACK_VERSION VERSION_GREATER_EQUAL "3.0.0")
16file(COPY ${FREECAD_LIBPACK_DIR}/plugins/tls DESTINATION ${CMAKE_BINARY_DIR}/bin)
17endif()
18file(COPY ${FREECAD_LIBPACK_DIR}/resources DESTINATION ${CMAKE_BINARY_DIR})
19message(STATUS "... end copying.\n=======================================\n")
20endif()
21
22if(COPY_LIBPACK_BIN_TO_BUILD)
23if(FREECAD_COPY_LIBPACK_BIN_TO_BUILD)
24message("Copying LibPack 'bin' directory to build 'bin' directory...")
25file(COPY ${FREECAD_LIBPACK_DIR}/bin DESTINATION ${CMAKE_BINARY_DIR})
26if(FREECAD_LIBPACK_VERSION VERSION_GREATER_EQUAL "3.0.0")
27message("Copying DLLs from LibPack 'lib' directory to build 'bin' directory...")
28file(GLOB DLLS ${FREECAD_LIBPACK_DIR}/lib/*.dll)
29file(COPY ${DLLS} DESTINATION ${CMAKE_BINARY_DIR}/bin)
30file(GLOB DLLS ${FREECAD_LIBPACK_DIR}/bin/Lib/site-packages/shiboken6/shiboken*.dll)
31file(COPY ${DLLS} DESTINATION ${CMAKE_BINARY_DIR}/bin)
32file(GLOB DLLS ${FREECAD_LIBPACK_DIR}/bin/Lib/site-packages/PySide6/pyside6*.dll)
33file(COPY ${DLLS} DESTINATION ${CMAKE_BINARY_DIR}/bin)
34endif()
35message(STATUS " ... done.")
36endif()
37if(FREECAD_COPY_PLUGINS_BIN_TO_BUILD)
38message(STATUS "=======================================\n"
39"Copying plugins to build directory.")
40file(COPY ${FREECAD_LIBPACK_DIR}/plugins/imageformats DESTINATION ${CMAKE_BINARY_DIR}/bin)
41file(COPY ${FREECAD_LIBPACK_DIR}/plugins/platforms DESTINATION ${CMAKE_BINARY_DIR}/bin)
42file(COPY ${FREECAD_LIBPACK_DIR}/plugins/styles DESTINATION ${CMAKE_BINARY_DIR}/bin)
43file(COPY ${FREECAD_LIBPACK_DIR}/resources DESTINATION ${CMAKE_BINARY_DIR})
44file(WRITE ${CMAKE_BINARY_DIR}/bin/qt.conf "[Paths]\nPrefix=..\n")
45endif()
46endif()
47
48if(FREECAD_INSTALL_DEPEND_DIRS)
49# Test install command for installing/copying directories
50message(STATUS "=======================================")
51install(DIRECTORY ${FREECAD_LIBPACK_DIR}/plugins/platforms DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
52install(DIRECTORY ${FREECAD_LIBPACK_DIR}/plugins/imageformats DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
53install(DIRECTORY ${FREECAD_LIBPACK_DIR}/plugins/iconengines DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
54install(DIRECTORY ${FREECAD_LIBPACK_DIR}/plugins/sqldrivers DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
55install(DIRECTORY ${FREECAD_LIBPACK_DIR}/plugins/styles DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
56if(NOT FREECAD_LIBPACK_VERSION VERSION_GREATER_EQUAL "3.0.0")
57install(DIRECTORY ${FREECAD_LIBPACK_DIR}/plugins/printsupport DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
58endif()
59if(FREECAD_LIBPACK_VERSION VERSION_GREATER_EQUAL "3.0.0")
60install(DIRECTORY ${FREECAD_LIBPACK_DIR}/plugins/tls DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
61endif()
62install(DIRECTORY ${FREECAD_LIBPACK_DIR}/resources DESTINATION ${CMAKE_INSTALL_PREFIX})
63install(DIRECTORY ${FREECAD_LIBPACK_DIR}/bin DESTINATION ${CMAKE_INSTALL_PREFIX})
64install(DIRECTORY ${FREECAD_LIBPACK_DIR}/lib DESTINATION ${CMAKE_INSTALL_PREFIX} FILES_MATCHING PATTERN "*.dll")
65if(FREECAD_LIBPACK_VERSION VERSION_GREATER_EQUAL "3.0.0")
66# Trailing slashes make sure that cMake extracts the files from the directory, rather than taking the
67# directory with it
68install(DIRECTORY ${FREECAD_LIBPACK_DIR}/lib/ DESTINATION ${CMAKE_INSTALL_PREFIX}/bin FILES_MATCHING PATTERN "*.dll")
69install(DIRECTORY ${FREECAD_LIBPACK_DIR}/bin/Lib/site-packages/shiboken6/ DESTINATION ${CMAKE_INSTALL_PREFIX}/bin FILES_MATCHING PATTERN "shiboken*.dll")
70install(DIRECTORY ${FREECAD_LIBPACK_DIR}/bin/Lib/site-packages/PySide6/ DESTINATION ${CMAKE_INSTALL_PREFIX}/bin FILES_MATCHING PATTERN "pyside6*.dll")
71endif()
72message(STATUS "Created install commands for INSTALL target.\n")
73endif()
74endmacro()
75