Как настроить новый проект C ++ с restbed? - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь написать веб-сервис на C ++ (я очень плохо знаком с языком), используя restbed для обработки HTTP.Оба проекта, похоже, используют cmake для настройки конфигурации и управления зависимостями, поэтому я решил, что и я тоже так сделаю.Но я не совсем понимаю, как это сделать.

Вот мой минимальный CMakeLists.txt

cmake_minimum_required(VERSION 3.7)
project(WebService)

set (WebService_VERSION_MAJOR 1)
set (WebService_VERSION_MAJOR 0)

set(CMAKE_CXX_STANDARD 11)

add_executable(${PROJECT_NAME} main.cpp)

Я понимаю, что есть несколько способов добавить зависимости в cmake.Я пытался сделать что-то вроде find_package (restbed), но, очевидно, он не знает, где найти нужный мне пакет, и постоянно просит дополнительные файлы cmake, чтобы помочь ему.Я не уверен, где я должен их найти.Я должен написать один сам?

Я пытался использовать директиву ExternalProject_Add.Я добавил следующее:

ExternalProject_Add(
    restbed
    GIT_REPOSITORY "git@github.com:Corvusoft/restbed.git"
    SOURCE_DIR "${CMAKE_SOURCE_DIR}/deps/restbed"
    CMAKE_ARGS -DBUILD_SSL=OFF
    )
set (restbed_INCLUDE ${CMAKE_SOURCE_DIR}/deps/restbed/distribution/include/)
set (restbed_LIB ${CMAKE_SOURCE_DIR}/deps/restbed/distribution/library/librestbed.a)

add_dependencies(${PROJECT_NAME} restbed)
include_directories(${restbed_INCLUDE})
target_link_libraries(${PROJECT_NAME} ${restbed_LIB})

Проблема, с которой я сталкиваюсь, заключается в том, что, по-видимому, все шаги по настройке внешнего проекта выполняются во время сборки, а не во время конфигурации cmake.Это означает, что каждый внешний проект перестраивает и переустанавливает все каждый раз, когда я запускаю make.Мой сервис маленький, и это кажется очень расточительным.

Есть ли лучший способ справиться с зависимостями?Есть ли более простой инструмент, чем cmake?Есть ли в C ++ что-то похожее на груз Руста или, возможно, на стек Хаскелла?

...