【发布时间】:2018-12-06 04:46:50
【问题描述】:
我需要在我正在处理的 C++ 项目中使用 OpenSSL 和 cpprestsdk,但在正确构建它时遇到了问题。在我的 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
我用 homebrew 安装了 OpenSSL 和 cpprestsdk 就好了,我已经将我认为我需要的所有东西都添加到了我的 PATH 中。我尝试向 GCC 添加命令行参数以包含 cpprestsdk 路径,并且尝试重命名 #include <cpprest...> to #include <cpprestsdk...> 但无济于事。有人有想法么?我确定这只是我缺少的一些简单的东西。
【问题讨论】:
-
我已经尝试将命令行参数添加到 GCC 以包含 cpprestsdk 路径 -- 您应该准确说明您尝试过的内容,而不仅仅是说明您尝试过不同的东西.错误很明显,编译器无法解析
cpprest/http_client.h。也许您指定的路径不正确? -
@PaulMcKenzie 我尝试了“-I /usr/local/opt/cpprestsdk/”和“-I /usr/local/opt/cpprestsdk/lib/cpprestsdk”以及它们之间的许多组合。第一个路径是指向 /usr/local/Cellar/cpprestsdk/2.10.8 的符号链接
-
您好,您可以尝试打印变量来检查路径是否正确:
message(STATUS "cpprestsdk include dir: ${cpprestsdk_INCLUDE_DIRS}")
标签: c++ gcc cmake dependencies cpprest-sdk