Как включить библиотеку в мой код с помощью cmake?

Я попытался «сделать» библиотеку yaml-cpp, не уверен, что сделал это правильно, но как мне ее собрать? В руководстве (https://github.com/jbeder/yaml-cpp/blob/master/README.md) говорит запустить cmake в каталоге сборки, но cmake не смог найти файл cmakelist, поэтому я сделал это в исходном каталоге, но что дальше? Как мне это построить?

Если бы кто-то мог шаг за шагом сделать новичка, чтобы получить библиотеку (или любую библиотеку), чтобы я мог включить ее в свой код, это было бы здорово.

Я использую Windows 7 и компилирую с помощью терминала (используя Codeblocks MinGW gcc/g++) и редактор возвышенного текста 3.

Редактировать: я не "сделать". Как я могу получить это?


person JemoeE    schedule 28.10.2016    source источник
comment
Вы хотите спросить, как использовать CMake (я не понимаю, как эта проблема относится к yaml-cpp)? По сути, вы запускаете команду cmake (если вы делаете это внутри каталога build, это будет cmake ..), а затем выполняете сборку, используя любую систему сборки, которую вы используете (возможно, ее make ?)   -  person UnholySheep    schedule 28.10.2016
comment
Я отредактировал заголовок. У меня нет марки... Как мне ее получить?   -  person JemoeE    schedule 28.10.2016
comment
Если вы используете MinGW, у вас должен быть mingw32-make   -  person UnholySheep    schedule 28.10.2016


Ответы (1)


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

  1. перейдите по адресу https://github.com/jbeder/yaml-cpp и загрузите корневую библиотеку.
  2. откройте cmake gui и выберите исходный каталог как <my project>/yaml-cpp-master

  3. выберите каталог для сборки. Я бы назвал его <my project>/yaml-cpp-master/codeblocks_build

  4. нажмите настроить, а затем проверьте все значения.

  5. нажмите сгенерировать и дождитесь его завершения.

  6. Найдите сгенерированный файл проекта codeblocks в <my project>/yaml-cpp-master/codeblocks_build

  7. Скомпилируйте проект как обычно.

  8. найдите сгенерированные файлы DLL и свяжите их с вашим проектом.

Причина, по которой вы получаете эту ошибку, заключается в том, что cmake пытается найти исходный код в каталоге build, который только что создан, как показано в руководстве:

mkdir build
cd build

Это предназначено для того, чтобы указать cmake, где его строить, а не откуда строить. Если вы хотите использовать его через командную строку, вам нужно указать cmake, где собирать и где находится исходный код.

Чтобы затем вызывать функции из этой библиотеки, вам нужно связать файлы заголовков (файлы, начинающиеся с .h или .hpp) и библиотеки DLL.

.cpp .c и т. д. - это реализация, а .h .hpp - это определения.

Поэтому, когда вы включаете вот так: #include<something.h>, вы включаете определения, которые позже заполняются файлами .cpp, однако в случае библиотеки они вместо этого заполняются из .dll или .o

person Avalon    schedule 28.10.2016
comment
Потрясающий! Спасибо тебе за это. В 7. Скомпилируйте проект как обычно. - можно, пожалуйста, поконкретнее? Обычно я использую файл gcc file.cpp -o. Будет ли это работать? - person JemoeE; 28.10.2016
comment
он создаст собственный make-файл в каталоге проекта. Вы используете кодовые блоки, поэтому достаточно открыть его с помощью кодовых блоков и щелкнуть по сборке/компиляции. Просто убедитесь, что вы используете тот же компилятор, который вы указали в cmake. - person Avalon; 28.10.2016
comment
Я попробую это! Это потому, что я пытаюсь делать все с терминала, но, вероятно, было бы проще использовать сборку IDE. - person JemoeE; 28.10.2016
comment
Да, вы можете посмотреть, какие команды запускаются при компиляции make-файла. Но, как правило, сначала заставить его работать с IDE, а затем посмотреть, как он это делает, может быть проще, чем работать только с терминалом. Я думаю, вам понадобится mingw32-make.exe, а затем используйте сгенерированный make-файл. - person Avalon; 28.10.2016