CMake работает нормально, но сборка не работает для сторонней библиотеки - PullRequest
0 голосов
/ 06 декабря 2018

Мне нужно использовать OpenSSL и cpprestsdk в проекте C ++, над которым я работаю, но у меня возникают проблемы с его правильной сборкой.В моем CMakeLists.txt у меня есть:

cmake_minimum_required(VERSION 3.12)
project(Final_Project)
set(CMAKE_CXX_STANDARD 11)

set(OPENSSL_INCLUDE_DIR /usr/local/opt/openssl/bin/openssl)

find_package(cpprestsdk REQUIRED NAMES cpprestsdk cpprest )

find_package(OpenSSL REQUIRED)

add_executable(Final_Project main.cpp)

, который прекрасно собирается и не возвращает ошибок.Весь мой код на данный момент содержится в main.cpp.

В main.cpp у меня есть:

#include <iostream>
#include <string>
#include <cpprest/http_client.h>
#include <cpprest/filestream.h>


using namespace std;


int main(int argc, char* argv[])
{
    cout << "Running!" << endl;
    return 0;
}

Но всякий раз, когда я пытаюсь его собрать / запустить, я получаю ошибку сcpprest:

Scanning dependencies of target Final_Project
[ 50%] Building CXX object CMakeFiles/Final_Project.dir/main.cpp.o
/Users/myAccount/myFolder/Final Project/main.cpp:3:10: fatal error: 'cpprest/http_client.h' file not found
#include <cpprest/http_client.h>
         ^~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
make[2]: *** [CMakeFiles/Final_Project.dir/main.cpp.o] Error 1
make[1]: *** [CMakeFiles/Final_Project.dir/all] Error 2
make: *** [all] Error 2

Я прекрасно установил OpenSSL и cpprestsdk с помощью homebrew, и я добавил все, что мне нужно, в мои PATH.Я попытался добавить аргументы командной строки в GCC, чтобы включить путь cpprestsdk, и я попытался переименовать #include <cpprest...> to #include <cpprestsdk...>, но безрезультатно.У кого-нибудь есть идеи?Я уверен, что мне просто не хватает чего-то простого.

1 Ответ

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

Я понял, что в названии моего проекта есть пробел, поэтому я реорганизовал его без этого и соответственно обновил свой CMake.Я также должен был добавить target_link_libraries ниже строки add_executable.Пример моих рабочих CMakeLists ниже:

cmake_minimum_required(VERSION 3.12)
project(FinalProject)
set(CMAKE_CXX_STANDARD 11)

# Set OpenSSL dir, this *should* be default on linux/mac
set(OPENSSL_INCLUDE_DIR /usr/local/opt/openssl/bin/openssl)

# Get OpenSSL
find_package(OpenSSL REQUIRED)

# Get cppRestSDK
find_package(cpprestsdk REQUIRED)

# Compile + Link
add_executable(FinalProject main.cpp)
target_link_libraries(FinalProject PRIVATE cpprestsdk::cpprest)
...