在C ++项目中包含Pistache

时间:2018-09-23 17:25:57

标签: c++ cmake

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

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

我的文件夹结构如下:

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

pistache目录保存已编译的pistache source代码的全部(我不确定是需要整个项目还是只需要头文件)

我尝试遵循examplequickstart指南,但是没有看。

我的 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)

我的 main.cpp 是他们的example 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&)'

我看过诸如this之类的问题,但对我没有帮助。

我的问题是:

  1. 我需要完整的 Pistache 源代码还是仅标头?
  2. 我的 CMakeLists.txt 有什么问题导致这些错误?

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

谢谢!

1 个答案:

答案 0 :(得分:2)

这是我的 CMakeLists.txt 文件。效果很好:D

TJSONArray *Data = ...;

TJSONArray *arr;

for(int i = 0; i < Data->Size(); i++)
{
    arr = Data->GetValue<TJSONArray*>("$["+IntToStr(i)+"].tokens");
}