2017-08-07 256 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