Как добавить opendnp3 в качестве статической библиотеки C ++ - PullRequest
0 голосов
/ 01 марта 2019

В настоящее время я пытаюсь настроить библиотеку opendnp3 C ++ в качестве статической библиотеки.Я собрал решение, следуя их руководству по сборке для Windows , и смог сгенерировать несколько .lib-файлов, которые я считаю статическими библиотеками.

В совершенно отдельной папке яУ меня есть следующие файлы в следующей структуре папок:

C:/Development/C++/opendnp3/lib/ # .lib files are contained in this directory

C:/Development/pybexample/
--> CMakeLists.txt
--> src/
    --> test.cpp

У меня CMakeLists.txt настроен следующим образом:

cmake_minimum_required(VERSION 2.8)
project(pybexample)

set(SOURCE_FILES src/test.cpp)

add_library(opendnp3 STATIC IMPORTED)
set_target_properties(opendnp3 PROPERTIES IMPORTED_LOCATION C:/Development/C++/opendnp3/lib/opendnp3.lib)

add_executable(pybexample ${SOURCE_FILES})
target_link_libraries(pybexample opendnp3)

В пределах test.cpp я просто звоню:

#include <iostream>
#include "opendnp3/LogLevels.h"
using namespace std;

int main(void) {
    cout << "Hello world!" << endl;
    system("pause");
}

Однако, когда я пытаюсь создать test.cpp, я получаю сообщение об ошибке: «Невозможно открыть включаемый файл:« opendnp3 / LogLevels.h »: такого файла или каталога нет».Я чувствую, что должно быть что-то довольно простое, что я пропустил, но я довольно плохо знаком со статическими библиотеками и с CMake, так что я не могу понять это.Кто-нибудь сможет помочь дать некоторые указания относительно того, почему мое включение не выполняется?

1 Ответ

0 голосов
/ 04 марта 2019

Оказывается, это было вызвано двумя проблемами.

Первая проблема заключалась в том, что мне нужно было добавить строку к моему CMakeLists.txt, которая добавила бы файлы заголовков для opendnp3 в мой проект.Это было достигнуто путем добавления include_directories(<path_to_headers>) перед строкой add_executable(pybexample ${SOURCE_FILES}).

Однако, при этом также стало ясно, что существует вторая проблема: я не построил библиотеку должным образом, поскольку она не генерировала никаких заголовков с библиотекой.Оказывается, я пропустил инструкции запустить проект INSTALL .После установки CMAKE_INSTALL_PREFIX и запуска проекта INSTALL библиотека и заголовки были сгенерированы и готовы к использованию.

...