Включить фисташку в проект C ++ - PullRequest
0 голосов
/ 23 сентября 2018

Извиняюсь за то, что это очень нубский вопрос, но я довольно новичок в C ++.

Я создаю RESTful-сервис с pistache .Я проверил это и получил примеры, работающие в самом проекте, но сейчас пытаюсь импортировать / включить инфраструктуру для использования в моем собственном проекте.

Моя структура папок выглядит следующим образом:

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

Каталог pistache содержит все скомпилированного кода исходного кода фисташки . (я не уверен, что мне нужен весь проект или только файлы заголовков)

Я попытался последовать примеру и быстрому запуску руководство, но не смотрели.

My CMakeLists.txt в настоящее время выглядит как barebones:

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)

My main.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&)'

Я смотрел на такие вопросы, как this , но мне это не помогло.

Мои вопросы:

  1. Нужен ли мне весь исходный код Pistache или только заголовки?
  2. Что не так в моем CMakeLists.txt , который вызывает эти ошибки?

Извините, если это выглядит как дубликат, но не смог найти нужные мне ответы.

Спасибо!

1 Ответ

0 голосов
/ 05 декабря 2018

Это мой 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})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...