Как мне добавить стороннюю библиотеку в QtCreator? - PullRequest
1 голос
/ 18 июня 2019

Я пытаюсь добавить OpenXLSX в мой проект QtCreator, но, следуя этому руководству Я не могу заставить QtCreator найти файл заголовка.

В руководстве QtCreator упоминаются файлы .lib, которые эта библиотека не использует, так что я немного заблудился с этим руководством. Я погуглил и попытался добавить все заголовки и источники из OpenXLSX/@library/@openxlsx/interfaces/c++/ в мои каталоги заголовков и источников в дереве проекта. Все же я все еще получаю

exceltest.cpp:3: error: 'OpenXLSX.h' file not found

Строка 3 -

#include "OpenXLSX.h"

Я тоже пробовал

#include "3rdparty/OpenXLSX/@library/@openxlsx/interfaces/c++/headers/OpenXLSX.h"

Каталог 3-го участника находится в том же месте, что и exceltest.pro

Я также пробовал оба с угловыми скобками.

Мне не нужны никакие расширенные функциональные возможности из OpenXLSX, только чтение и запись значений в ячейки, которые я указываю в .xlsx или .xls. Я также не женат на идее использования OpenXLSX, поэтому, если кто-то знает, превосходят любые библиотеки, которые будут работать лучше, я открыт для идеи.

РЕДАКТИРОВАТЬ: Итак, после того, как я добавил свои заголовки и источники в дерево проекта, мой файл exceltest.pro выглядит как this . Я пытался поставить эту строку

#include "3rdparty/OpenXLSX/@library/@openxlsx/interfaces/c++/headers/OpenXLSX.h"

в exceltest.h вместо exceltest.cpp, и я получаю разные ошибки. QtCreator, похоже, находит файлы библиотеки, но что-то не так с библиотекой? Это ошибки:

In file included from J:/George/Coding/Qt/Test/exceltest/3rdparty/OpenXLSX/@library/@openxlsx/interfaces/c++/headers/XLCell.h:49:0,
                 from ..\exceltest\3rdparty\OpenXLSX\@library\@openxlsx\interfaces\c++\sources\XLCell.cpp:5:
J:/George/Coding/Qt/Test/exceltest/3rdparty/OpenXLSX/@library/@openxlsx/interfaces/c++/headers/XLDefinitions.h:57:35: warning: multi-character character constant [-Wmultichar]
     constexpr uint32_t maxRows = 1'048'576;
                                   ^~~~~
J:/George/Coding/Qt/Test/exceltest/3rdparty/OpenXLSX/@library/@openxlsx/interfaces/c++/headers/XLDefinitions.h:59:36: warning: missing terminating ' character
     constexpr uint16_t maxCols = 16'384;
                                    ^
J:/George/Coding/Qt/Test/exceltest/3rdparty/OpenXLSX/@library/@openxlsx/interfaces/c++/headers/XLDefinitions.h:59:36: error: missing terminating ' character
     constexpr uint16_t maxCols = 16'384;
                                    ^~~~~
..\exceltest\3rdparty\OpenXLSX\@library\@openxlsx\interfaces\c++\sources\XLCellRange.cpp:5:10: fatal error: XLCellRange.h: No such file or directory
 #include <XLCellRange.h>
          ^~~~~~~~~~~~~~~
compilation terminated.
..\exceltest\3rdparty\OpenXLSX\@library\@openxlsx\interfaces\c++\sources\XLCellReference.cpp:5:10: fatal error: XLCellReference.h: No such file or directory
 #include <XLCellReference.h>
          ^~~~~~~~~~~~~~~~~~~

1 Ответ

0 голосов
/ 18 июня 2019

Во-первых, вы должны собрать проект OpenXLSX, чтобы получить библиотеку.Проект использует cmake для генерации.Сначала вам нужно сгенерировать рабочую область:

Перечислите все доступные генераторы с помощью

cmake --help

Выберите тот, который вы хотите использовать, затем:

cmake . -G "Your generator"

Buildваш проект в соответствии с вашим генератором.Библиотеки и заголовки будут скопированы в каталог install .

В вашем файле .pro добавьте следующие строки:

INCLUDEPATH += /path/to/OpenXLSX/include
LIBS += -L/path/to/OpenXLSX/lib -lopenxlsx.lib

Первая позволяет вамвключите заголовки OpenXLXS.Вторая строка будет использоваться компоновщиком для связи библиотеки с вашим приложением.

Возможно, вам придется использовать другую версию вашей библиотеки, если вы хотите построить свой проект на Windows или Linux.Вы можете использовать этот синтаксис:

# On Windows in release mode
win32:CONFIG(release, debug|release): LIBS += -L/path/to/OpenXLSX/lib -lopenxlsx.dll

#On Windows debug mode
else:win32:CONFIG(debug, debug|release): LIBS +=  -L/path/to/OpenXLSX/lib -lopenxlsx_debug.dll

#On Linux debug and release
else:unix: LIBS +=  -L/path/to/OpenXLSX/lib -lopenxlsx.so

В Qt Creator, если вы щелкнете правой кнопкой мыши по своему проекту, вы можете использовать выделенный мастер для добавления библиотеки (опция Add Library в контекстном меню).Он добавит все, что вам нужно в вашем * .pro

...