CMake运行正常,但构建不适用于第三方图书馆

时间:2018-12-06 04:46:50

标签: c++ gcc cmake dependencies cpprest-sdk

我需要在正在处理的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...>,但无济于事。有人有想法么?我确定这只是我所缺少的简单事物。

1 个答案:

答案 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)