Вы были введены в заблуждение документацией CGAL, на которую вы ссылаетесь.
Разработчики CGAL выбрали CMake в качестве системы сборки для исходного пакета CGAL . Это популярная система сборки (выдающаяся для кросс-платформенной переносимости). Они также иллюстрируют построение своих примерных программ с помощью CMake: ; естественно, с примеры являются частью исходного пакета. Они также рекомендуют использовать CMake для создания собственных программ, которые зависят от CGAL.
Это достаточно справедливо для того, чтобы рекомендовать CMake и не удивляться тому, что они делают. Однако: если вы хотите написать программу, которая зависит от любой библиотеки - libfoo
- вы исходите из предположения, что libfoo
уже установлен для использования в вашем проекте. Что означает:
Файлы libfoo
заголовка - foo.h
, что угодно, - которые определяют программные интерфейсы библиотеки на вашей системе где-то так, что ваш компилятор может найти и прочитать их, когда вы пишете, например, #include <foo.h>
в вашем коде.
В libfoo
бинарниках - libfoo.a
, libfoo.so
, foo.lib
, foo.dll
, libfoo.dylib
, в зависимости от обстоятельств может быть для вашей ОС - которые содержат реализацию в библиотеке также где-то в вашей системе, так , что ваш компоновщик может найти их и свяжите их с объектным кодом вашей программы , чтобы сделать полный исполняемый файл. (И, в случае динамических библиотек , где-нибудь там, где может найти загрузчик времени выполнения).
Итак, насколько здание программы, то она не имеет значения как libfoo
заголовочных файлы и исполняемые файлы должны быть там, где они находятся на вашей системе , будь то положить туда CMake или феями. Дело только в том, что там . Затем вы можете построить свою программу с CMake, если хотите, или любой другим способом, который вам нравится.
Конечно, это может быть случай, когда вы решили написать программу, которая libfoo
является не уже установлен в вашей системе. В этом случае вы установите .Затем перейдите к вашей программе в предположении, что она установлена .
Вам нужна библиотека CGAL и файлы заголовков, которые необходимо установить. Это должно было бы быть достигнуто (Linux/OS X), установив пакет разработки libcgal
, предоставленный вашей операционной системой, используя его менеджер пакетов или (Windows), загрузив и запустив программу установки. Тогда вам не нужно знать или заботиться о том, как построен CGAL .
Если вы не можете получить пакет разработки по какой-либо причине или технически заинтересованы при установке библиотеки «из первых принципов», то вам необходимо построить и установить из исходного пакета. Поскольку система сборки для исходного пакета CMake, вам нужно научиться создавать и устанавливать его с помощью CMake и делать это.
После CGAL является установлен, чтобы использовать в своих проектах вам нужно только позаботиться рутинных требований с использованием библиотеки в: -
- Вы сообщаете компилятору, где найти заголовок библиотеки файлы, если они не включены ни в один из его включенных каталогов по умолчанию.
- Вы говорите компоновщику, чтобы связать библиотеку.
- Вы говорите компоновщику, где найти библиотеку, если ее нет в одном из своих поисковых каталогов по умолчанию.
ли вы, что с CMake, Scons, Autotools, в Makefile, проект настройки в вашем IDE или просто работает ваш компилятор и компоновщик в командной строке с нужными опциями полностью ваш собственный выбор. (Хотя последний является наиболее эффективным поучительным, когда вы начинаете , но начинаете пытаться понять весь компилирующий и связанный бизнес).
Примеры программ CGAL могут быть построены с помощью кода :: Блоки как обычные простых проектов с библиотечными зависимостями, если вы предварительно установили CGAL .
[Это] (https://cmake.org/about/) объясняет, что такое CMake. Это не отвечает, почему любой автор библиотеки решил использовать его, но он говорит вам, для чего это полезно. CMake совместим с некоторыми IDE. Код :: Блоки - это IDE, которую следует избегать по многим причинам. – IInspectable
Что заставляет вас полагать, что вам нужно использовать CMake для создания программы, которая связывается с libCGAL? (Добавьте эту информацию в тело вашего вопроса) –