Как добавить C ++ REST SDK в качестве подмодуля с CMake? - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь построить проект с многочисленными зависимостями, такими как Boost, OpenSSL и C ++ REST SDK.Тем не менее, требуется, чтобы исходный код был включен в рабочую область проекта и чтобы библиотека была построена из указанного исходного кода.

Наиболее последовательный успешный способ достижения этой цели - это использование * 1003.*, add_subdirectory, target_link_libraries и некоторые умные проекты, созданные для этой цели, такие как boost-cmake и openssl-cmake .

Возьмем, к примеру, следующую структуру проекта:

prjct
| include/
| libs/
| | boost-cmake/
| | openssl-cmake/
| | cpprestsdk/
| src/
| tests/
| CMakeLists.txt

, для которой CMakeLists.txt верхнего уровня будет содержать:

...
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/libs/boost-cmake)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/libs/openssl-cmake)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/libs/cpprestsdk)

target_link_libraries(${PROJECT_NAME_L}
    PUBLIC
        Boost::system
        Boost::thread
        Boost::log
        Boost::program_options
        Boost::chrono

        ssl  # OpenSSL::SSL
        crypto  # OpenSSL::Crypto

        cpprestsdk::cpprest
)
...

Однако в случаеВ библиотеке cpprestsdk я получаю следующую ошибку при запуске cmake .. из build/:

CMake Error at CMakeLists.txt:55 (add_library):
  Target "prjct" links to target "cpprestsdk::cpprest" but the target
  was not found. Perhaps a find_package() call is missing for and IMPORTED
  target, or an ALIAS target is missing?

Как я могу связать и использовать C ++ REST SDK в этих ограничениях?

...