Advertisement
AlexNovoross87

CMAKE_INSTALL

Jan 24th, 2025 (edited)
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
CMake 3.74 KB | None | 0 0
  1. #CMAKE_INSTALL_PREFIX задает путь, который будет использоваться
  2. #как базовый для всех установочных директорий, указанных в
  3. #команде install(). По умолчанию этот параметр равен /usr/local на
  4. #UNIX-подобных системах и C:/Program Files/${PROJECT_NAME} на Windows
  5. set(CMAKE_INSTALL_PREFIX install)
  6.  
  7. #TARGETS: Указывает, какие библиотеки (цели) нужно установить.
  8. #В данном случае это PRINT_LIB, SVG_LIB, ROUTE_LIB и GRAPH_LIB.
  9. #EXPORT: Создает набор экспортов с именем PRINT_LIBTargets,
  10. #который будет использоваться для импорта этих библиотек в других проектах.
  11. install(TARGETS PRINT_LIB SVG_LIB EXPORT PRINT_LIBTargets
  12.   #LIBRARY DESTINATION: Определяет директорию, куда будут установлены
  13.   #динамические библиотеки (например, .so или .dll).
  14.   LIBRARY DESTINATION libres
  15.   #ARCHIVE DESTINATION: Указывает директорию для статических библиотек
  16.   #(например, .a или .lib).
  17.   ARCHIVE DESTINATION libresarchs
  18.   #INCLUDES DESTINATION: Определяет директорию для заголовочных файлов,
  19.   #которые будут установлены вместе с библиотеками.
  20.   INCLUDES DESTINATION includes
  21. )
  22.  
  23. #Эта команда устанавливает файл structs.h в указанную директорию includes.
  24. #Это полезно для обеспечения доступности заголовочных файлов для других
  25. #проектов, которые могут использовать вашу библиотеку.
  26. install(FILES structs.h DESTINATION includes)
  27.  
  28. #EXPORT: Создает файл конфигурации для экспортируемых целей, что позволяет
  29. #другим проектам находить и использовать ваши библиотеки.
  30. install(EXPORT PRINT_LIBTargets
  31. #FILE: Указывает имя файла конфигурации, который будет создан
  32. #(в данном случае PRINT_LIBTargetsConfig.cmake).
  33.   FILE PRINT_LIBTargetsConfig.cmake
  34. #NAMESPACE: Определяет пространство имен для импортируемых целей
  35. #(в данном случае PRINTLIB::). Это помогает избежать конфликтов имен при
  36. #использовании нескольких библиотек.
  37.   NAMESPACE PRINTLIB::
  38.   #DESTINATION: Указывает директорию, в которую будет установлен
  39.   #файл конфигурации.
  40.   DESTINATION lib/cmake/PRINT_LIB
  41. )
  42.  
  43.  
  44. #В другом где нам нужна будет PRINT_LIB создаем переменную PRINT_LIB_DIR
  45. #и указываем путь где лежит PRINT_LIB
  46. set(PRINT_LIB_DIR "F:/Practicum Learn/VSC-4/build/install/lib/cmake/PRINT_LIB/")
  47. #Можем искать функцией find_package
  48. find_package(PRINT_LIB CONFIG REQUIRED)
  49. if(PRINT_LIB_FOUND)
  50. MESSAGE(STATUS "FOUUUUUUUUUUUUUUUUUUUND")
  51. else()
  52. MESSAGE(FATAL_ERROR "NOT  FOUUUUUUUUUUUUUUUUUUUND")
  53. endif()
  54.  
  55. #Теперь к цели можем подключить PRINT_LIB используя пространство
  56. # PRINTLIB:: имен что было выше
  57. target_link_libraries(sortsex PUBLIC PRINTLIB::PRINT_LIB)
  58.  
  59.  
  60. #cmake --build . --target install --> Сделать install после постройки проекта
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement