Я хочу упростить свой скрипт externalProject_Add для Eve.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Я хочу упростить свой скрипт externalProject_Add для Eve.

Сообщение 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 ()


Подробнее здесь: https://stackoverflow.com/questions/791 ... pt-for-eve
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»