2017-08-07 38 views
1

我有一個在C++中使用cmakeList.txt的人的問題。我想使用Podofo項目(一個項目來解析&創建pdf)。在CMakelist文件中包含OpenSSL

所以我的主要功能是簡單的:

#include <iostream> 
#include <podofo/podofo.h> 

int main() { 
    PoDoFo::PdfMemDocument pdf; 
    pdf.Load("/Users/user/path/to.pdf"); 

    int nbOfPage = pdf.GetPageCount(); 

    std::cout << "Our pdf have " << nbOfPage << " pages." << std::endl; 
    return 0; 
} 

我cmakeList.txt是:

cmake_minimum_required(VERSION 3.7) 
project(untitled) 

set(CMAKE_CXX_STANDARD 14) 

set(SOURCE_FILES main.cpp) 

add_executable(untitled ${SOURCE_FILES}) 

但我堅持了這個錯誤:

/usr/local/include/podofo/base/PdfEncrypt.h:44:10: fatal error: 'openssl/opensslconf.h' file not found 
#include <openssl/opensslconf.h 

我試着包括find_package,find_library ..設置一些變量,但我沒有找到方法。

我ENV是:在通過家庭釀造在/ usr /本地安裝在/ usr /本地/ podofo

  • 的OpenSSL通過家庭釀造

    • MACOS
    • 克利翁
    • Podofo安裝/ opt/openssl

    感謝提前社區!

  • 回答

    2

    find_package是正確的方法;你會發現它的細節here

    在你的情況,你應該添加這些行:

    find_package(OpenSSL REQUIRED) 
    target_link_libraries(untitled OpenSSL::SSL) 
    

    如果CMake的不直接找OpenSSL,你應該設置CMake的變量OPENSSL_ROOT_DIR

    +0

    是的,就是這樣! 您能否解釋我是如何找到語法「OpenSSL:SSL」的,爲什麼不只是「OpenSSL」,我永遠不會發現這一點。 現在我有另一個錯誤「ld:symbol(s)not found for architecture x86_64」,但它肯定是一個小錯誤 – nodeover

    +1

    @nodeover你看看給出的FindOpenSSL文檔嗎?這些導入的目標名稱應該始終存在於相應的FindModule.cmake文件的註釋中。另外,如果oLen爲您解決了這個具體問題,請務必將其標記爲答案並加以提升。 – utopia

    +0

    對不起,我不能投票:(「感謝您的反饋意見!投票少於15聲望的投票記錄,但不要更改公開顯示的帖子分數」 – nodeover