将开心果纳入C++项目中

Include Pistache in C++ project

本文关键字:项目 C++ 开心果      更新时间:2023-10-16

很抱歉这是一个非常菜鸟的问题,但我对C++相当陌生。

我正在用pistache建立一个RESTful服务。我已经检查了它并获得了在项目本身中运行的示例,但现在正在尝试导入/包含要在我自己的项目中使用的框架。

我的文件夹结构如下:

rest_api
|
+--- build
+--- include
|
+--- pistache
+--- src
|
+--- main.cpp
+--- tests

pistache目录包含编译的所有pistache 源代码。(我不确定我在这里是需要整个项目还是只需要头文件(

我试图遵循示例和快速入门指南,但没有看过。

我的CMakeLists.txt目前是这样的准系统:

cmake_minimum_required(VERSION 3.5.1)
project(rest_api)
set(CMAKE_CXX_STANDARD 14)
set(PISTACHE_DIR "./include/pistache")
include_directories (${PISTACHE_DIR}/include)
add_executable(${PROJECT_NAME} src/main.cpp)

的主要.cpp是他们示例 hello_server.cc 的直接副本。

当我尝试make我的项目时,我返回了异常(快照(:

main.cpp:(.text+0x143): undefined reference to `Pistache::Port::Port(unsigned short)'
main.cpp:(.text+0x148): undefined reference to `Pistache::Ipv4::any()'
main.cpp:(.text+0x162): undefined reference to `Pistache::Address::Address(Pistache::Ipv4, Pistache::Port)'
main.cpp:(.text+0x171): undefined reference to `Pistache::Http::Endpoint::options()'
main.cpp:(.text+0x185): undefined reference to `Pistache::Http::Endpoint::Options::threads(int)'
main.cpp:(.text+0x1c9): undefined reference to `Pistache::Http::Endpoint::Endpoint(Pistache::Address const&)'
main.cpp:(.text+0x1e2): undefined reference to `Pistache::Http::Endpoint::init(Pistache::Http::Endpoint::Options const&)'
main.cpp:(.text+0x223): undefined reference to `Pistache::Http::Endpoint::setHandler(std::shared_ptr<Pistache::Http::Handler> const&)'

我看过这样的问题,但对我没有帮助。

我的问题是:

  1. 我需要完整的开心源代码还是只需要标题?
  2. 我的CMakeList中有什么问题.txt导致这些错误?

抱歉,如果这被视为重复但无法找到我需要的正确答案。

谢谢!

这是我的CMakeLists.txt文件。工作正常:D

cmake_minimum_required(VERSION 3.12)
project(PistacheExample)
set(CMAKE_CXX_STANDARD 11)
############################
##      SOURCE FILES      ##
############################
add_executable(${PROJECT_NAME} src/main.cpp)
#####################################
##      HEADERS SEARCH PATHS       ##
##################################### 
set(PROJECT_INCLUDE_DIR "src/include")
set(PISTACHE_INCLUDE_DIR "libs/pistache/include")
set(HEADER_SEARCH_PATHS ${PROJECT_INCLUDE_DIR} ${PISTACHE_INCLUDE_DIR})
#####################################
##      LIBRARY SEARCH PATHS       ##
#####################################
set(PISTACHE_LIBRARY "${PROJECT_SOURCE_DIR}/libs/pistache/lib/libpistache.a")
set(EXTRA_LIBRARY "-pthread -lssl")
set(LIBRARIES_SEARCH_PATHS ${PISTACHE_LIBRARY} ${EXTRA_LIBRARY})
#######################################
##      ADDING HEADERS LIBRARY       ##
#######################################
include_directories(${HEADER_SEARCH_PATHS})
target_link_libraries(${PROJECT_NAME} ${LIBRARIES_SEARCH_PATHS})