如何使用Restbed设置新的C ++项目?

时间:2018-10-15 17:30:10

标签: c++ cmake restbed

我正在尝试使用restbed进行HTTP处理,以C ++编写Web服务(我是该语言的新手)。这两个项目似乎都在使用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 ++是否有类似于Rust的货物或Haskell的堆栈的东西?

0 个答案:

没有答案