Как добавить opendnp3 в качестве статической библиотеки C++

В настоящее время я пытаюсь настроить библиотеку 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, так что я не могу понять это. Кто-нибудь сможет помочь дать некоторые указания относительно того, почему мое включение не удается?

0 ответов

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

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

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

Другие вопросы по тегам