我需要在正在处理的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
我用自制软件安装了OpenSSL和cpprestsdk很好,并且我已将我认为需要的所有内容添加到PATH中。我尝试将命令行参数添加到GCC以包含cpprestsdk路径,并且尝试重命名#include <cpprest...> to #include <cpprestsdk...>
,但无济于事。有人有想法么?我确定这只是我所缺少的简单事物。
答案 0 :(得分:0)
我最终弄清楚了它,我的项目名称中有一个空格,因此我在没有空格的情况下对其进行了重构,并相应地更新了我的CMake。我还必须在add_executable行下面添加target_link_libraries。我的工作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)