我正在尝试使用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)
Run Code Online (Sandbox Code Playgroud)
据我所知,有几种方法可以在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})
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,显然设置外部项目的所有步骤都是在构建期间执行的,而不是在 cmake 配置期间执行的。这意味着每次运行时每个外部项目都会重建并重新安装所有内容make。我的服务很小,这看起来很浪费。
有没有更好的方法来处理依赖关系?有没有比cmake更简单的工具?C++ 是否有类似于 Rust 的货物或 Haskell 的堆栈的东西?
| 归档时间: |
|
| 查看次数: |
893 次 |
| 最近记录: |