Вот сценарий:
Один создает красивую библиотеку / модуль программного обеспечения на C / ++.
Теперь хочется, чтобы новые пользователи могли легко использовать эту библиотеку / модуль.
Поэтому нужно предоставить файлы проекта IDE, в которых все параметры включения, флаги компилятора и параметры компоновщика установлены правильно.
Кто-то хочет предоставить файлы проекта для множества разных IDE на разных платформах, таких как: Linux (32 бит & 64 бит), Windows (32 бит) & 64 бит), Mac (32 бит & 64 бит), CodeBlocks, Eclipse CDT, KDevelop3, CodeLite, Microsoft Visual Studio и т. Д.
(Предположим, что все пути к включаемым файлам и библиотекам, а также все флаги компилятора известны. Например, через статические пути загружаемого SDK)
Таким образом, пользователь, который хочет использовать эту библиотеку, должен:
Как можно легко создать такие файлы проекта из известных настроек, флагов компилятора и настроек компоновщика.
Я уже посмотрел на CMake (который очень близок к конечной цели), но он создает дополнительную папку CMake для файлов проекта IDE, а также не копирует возможный исходный код в каталог сборки.
(возможно, можно ли заставить CMake генерировать файлы проекта без папки CMake и с копированием исходных файлов в папку сборки?)
(все включают настройки, флаги компилятора & Настройки компоновщика уже
правильно установлено в файле проекта)(пользователю не нужно вручную
настроить параметры включения, флаги компилятора & настройки компоновщика)
Это возможно, только если ваш проект не имеет зависимостей. В противном случае вы не сможете узнать, где находятся библиотеки и заголовки deps на компьютере пользователя.
CMake был создан именно для этого — поиска зависимостей и создания файлов проекта.
но он создает дополнительную папку CMake в файл проекта IDE
Если вы говорите о бинарной директории, то она может быть расположена где угодно, не обязательно в директории проекта.
а также не копирует возможный пример источника в каталог сборки.
Это возможно с configure_file
функция, или запустив ${CMAKE_PROGRAM} -E copy
,
Других решений пока нет …