Я хочу автоматически получать и использовать Eve в своем проекте, поэтому после некоторых усилий я нашел следующий файл .cmake. Это лучший способ добиться этого или можно упростить сценарий?
# -*- mode: cmake -*-
option(PROJECT_ENABLE_EVE "Build EVE library from source" ON)
if (NOT TARGET eve::eve)
# compatibility with older CMake versions
if (EVE_ROOT AND NOT Eve_ROOT)
set(Eve_ROOT ${EVE_ROOT} CACHE PATH "Eve base directory")
unset(EVE_ROOT CACHE)
endif ()
if (PROJECT_ENABLE_EVE)
message(STATUS "Building EVE from source...")
set(EVE_VERSION "2023.2.15")
set(EVE_VERSION_TAG "2023.02.15")
# Define EVE source paths and options
set(EVE_URL "https://github.com/jfalcou/eve.git" CACHE STRING "EVE repository URL")
set(EVE_TAG "tags/v${EVE_VERSION_TAG}" CACHE STRING "EVE version tag")
set(EVE_BASE eve-external CACHE STRING "Base tag for EVE")
set(EVE_BASE_DIR ${CMAKE_CURRENT_BINARY_DIR}/${EVE_BASE} CACHE PATH "Path to EVE base directory")
set(EVE_SOURCE_DIR "${EVE_BASE_DIR}/source" CACHE PATH "Path to EVE source directory")
set(EVE_BINARY_DIR "${EVE_BASE_DIR}/build" CACHE PATH "Path to EVE build directory")
set(EVE_INSTALL_DIR "${EVE_BASE_DIR}/install" CACHE PATH "Path to install EVE")
set(EVE_STAMP_DIR "${EVE_BASE_DIR}/stamp" CACHE PATH "Path to EVE stamp directory")
ExternalProject_Add(${EVE_BASE}
PREFIX ${EVE_BASE_DIR}
STAMP_DIR ${EVE_STAMP_DIR}
GIT_REPOSITORY ${EVE_URL}
GIT_TAG ${EVE_TAG}
SOURCE_DIR ${EVE_SOURCE_DIR}
BINARY_DIR ${EVE_BINARY_DIR}
INSTALL_DIR ${EVE_INSTALL_DIR}
UPDATE_COMMAND ""
BUILD_COMMAND ""
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX=${EVE_INSTALL_DIR}
-DCMAKE_BUILD_TYPE=Release
-DEVE_BUILD_DOCUMENTATION=OFF # Disable documentation build
-DEVE_BUILD_TEST=OFF # Disable testing
-DEVE_BUILD_BENCHMARKS=OFF # Disable pkg-config
)
add_library(eve INTERFACE)
add_dependencies(eve ${EVE_BASE})
target_include_directories(eve SYSTEM INTERFACE
$
$
)
install(
TARGETS eve
EXPORT ProjectEveTarget
COMPONENT core
)
install(
DIRECTORY ${EVE_INSTALL_DIR}/include/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
COMPONENT core
FILES_MATCHING
PATTERN "*.hpp"
PATTERN "*.ipp"
)
export(
TARGETS eve
NAMESPACE eve::
FILE "${CMAKE_CURRENT_BINARY_DIR}/lib/cmake/${PROJECT_PACKAGE_NAME}/ProjectEveTarget.cmake"
)
install(
EXPORT ProjectEveTarget
NAMESPACE eve::
FILE ProjectEveTarget.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_PACKAGE_NAME}
COMPONENT cmake
)
add_library(eve::eve ALIAS eve)
target_link_libraries(project PUBLIC eve::eve)
else ()
if (Eve_ROOT)
find_package(eve REQUIRED PATHS ${Eve_ROOT})
target_link_libraries(project PUBLIC eve::eve)
else ()
message(FATAL_ERROR "Eve_ROOT not set and PROJECT_ENABLE_EVE is OFF")
endif()
endif ()
endif ()
Подробнее здесь: https://stackoverflow.com/questions/791 ... pt-for-eve
Я хочу упростить свой скрипт externalProject_Add для Eve. ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1731798005
Anonymous
Я хочу автоматически получать и использовать Eve в своем проекте, поэтому после некоторых усилий я нашел следующий файл .cmake. Это лучший способ добиться этого или можно упростить сценарий?
# -*- mode: cmake -*-
option(PROJECT_ENABLE_EVE "Build EVE library from source" ON)
if (NOT TARGET eve::eve)
# compatibility with older CMake versions
if (EVE_ROOT AND NOT Eve_ROOT)
set(Eve_ROOT ${EVE_ROOT} CACHE PATH "Eve base directory")
unset(EVE_ROOT CACHE)
endif ()
if (PROJECT_ENABLE_EVE)
message(STATUS "Building EVE from source...")
set(EVE_VERSION "2023.2.15")
set(EVE_VERSION_TAG "2023.02.15")
# Define EVE source paths and options
set(EVE_URL "https://github.com/jfalcou/eve.git" CACHE STRING "EVE repository URL")
set(EVE_TAG "tags/v${EVE_VERSION_TAG}" CACHE STRING "EVE version tag")
set(EVE_BASE eve-external CACHE STRING "Base tag for EVE")
set(EVE_BASE_DIR ${CMAKE_CURRENT_BINARY_DIR}/${EVE_BASE} CACHE PATH "Path to EVE base directory")
set(EVE_SOURCE_DIR "${EVE_BASE_DIR}/source" CACHE PATH "Path to EVE source directory")
set(EVE_BINARY_DIR "${EVE_BASE_DIR}/build" CACHE PATH "Path to EVE build directory")
set(EVE_INSTALL_DIR "${EVE_BASE_DIR}/install" CACHE PATH "Path to install EVE")
set(EVE_STAMP_DIR "${EVE_BASE_DIR}/stamp" CACHE PATH "Path to EVE stamp directory")
ExternalProject_Add(${EVE_BASE}
PREFIX ${EVE_BASE_DIR}
STAMP_DIR ${EVE_STAMP_DIR}
GIT_REPOSITORY ${EVE_URL}
GIT_TAG ${EVE_TAG}
SOURCE_DIR ${EVE_SOURCE_DIR}
BINARY_DIR ${EVE_BINARY_DIR}
INSTALL_DIR ${EVE_INSTALL_DIR}
UPDATE_COMMAND ""
BUILD_COMMAND ""
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX=${EVE_INSTALL_DIR}
-DCMAKE_BUILD_TYPE=Release
-DEVE_BUILD_DOCUMENTATION=OFF # Disable documentation build
-DEVE_BUILD_TEST=OFF # Disable testing
-DEVE_BUILD_BENCHMARKS=OFF # Disable pkg-config
)
add_library(eve INTERFACE)
add_dependencies(eve ${EVE_BASE})
target_include_directories(eve SYSTEM INTERFACE
$
$
)
install(
TARGETS eve
EXPORT ProjectEveTarget
COMPONENT core
)
install(
DIRECTORY ${EVE_INSTALL_DIR}/include/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
COMPONENT core
FILES_MATCHING
PATTERN "*.hpp"
PATTERN "*.ipp"
)
export(
TARGETS eve
NAMESPACE eve::
FILE "${CMAKE_CURRENT_BINARY_DIR}/lib/cmake/${PROJECT_PACKAGE_NAME}/ProjectEveTarget.cmake"
)
install(
EXPORT ProjectEveTarget
NAMESPACE eve::
FILE ProjectEveTarget.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_PACKAGE_NAME}
COMPONENT cmake
)
add_library(eve::eve ALIAS eve)
target_link_libraries(project PUBLIC eve::eve)
else ()
if (Eve_ROOT)
find_package(eve REQUIRED PATHS ${Eve_ROOT})
target_link_libraries(project PUBLIC eve::eve)
else ()
message(FATAL_ERROR "Eve_ROOT not set and PROJECT_ENABLE_EVE is OFF")
endif()
endif ()
endif ()
Подробнее здесь: [url]https://stackoverflow.com/questions/79196213/i-want-to-simplify-my-externalproject-add-script-for-eve[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия