在我的C ++二进制文件中包含库 - Cmake

时间:2017-09-08 14:09:30

标签: c++ cmake poppler

我在我的项目中使用poppler-cpp库。

它构建&正确启动它,但我需要在我的系统中安装popple。

在我的项目中导入(包括)poppler库的方法是什么,目的是在另一个没有安装poppler lib的linux系统上执行它,是否可能?

我当前的cmakeList.txt文件:

cmake_minimum_required(VERSION 3.5)
project(poppler_test)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/extra-cmake-modules/find-modules")
find_package(Poppler REQUIRED)
include(CMakeToolsHelpers OPTIONAL)
include_directories(${Poppler_INCLUDE_DIRS})
set(CMAKE_CXX_STANDARD 14)
set(SOURCE_FILES main.cpp)

ADD_LIBRARY(poppler STATIC IMPORTED)

add_dependencies( poppler poppler_test )

add_executable(poppler_test ${SOURCE_FILES})
target_link_libraries(${PROJECT_NAME} ${Poppler_LIBRARIES})

我的main.cpp程序

#include <algorithm>
#include <cpp/poppler-document.h>
#include <cpp/poppler-page.h>
#include <exception>
#include <iostream>
#include <memory>
#include <string>
#include <vector>

using namespace std;

int main(int argc, char* argv[]) {
  auto input = "/Home/Dev/poppler-test/test.pdf";
  shared_ptr<poppler::document> doc{poppler::document::load_from_file(input)};
  const int pagesNbr = doc->pages();
  cout << "page count: " << pagesNbr << endl;
  vector<string> infoKeys{doc->info_keys()};
  for_each(infoKeys.begin(), infoKeys.end(),
           [doc](string infoKey) { cout << doc->info_key(infoKey).to_latin1() << endl; });

  for (int i = 0; i < pagesNbr; ++i) {
    shared_ptr<poppler::page> currentPage{doc->create_page(i)};
    if (currentPage == nullptr) {
      auto byteArrayResult = currentPage->text().to_utf8();
      string result{byteArrayResult.begin(), byteArrayResult.end()};
      cout << result << endl;
    }
  }
}

0 个答案:

没有答案