Как сгенерировать CMakeLists.txt? - PullRequest
47 голосов
/ 02 августа 2011

Мне нужны некоторые указатели / советы о том, как автоматически генерировать файлы CMakeLists.txt для CMake.Кто-нибудь знает о каких-либо существующих генераторах?Я проверил перечисленные в CMake Wiki , но, к сожалению, они мне не подходят.

У меня уже есть базовый скрипт на Python, который просматривает структуру каталогов моего проекта и генерирует необходимые файлы, но сейчас он действительно "тупой".Я хотел бы дополнить его, чтобы учесть, например, разные платформы, для которых я создаю, используемый мной компилятор \ кросс-компилятор или разные версии зависимостей библиотек, которые у меня могут быть.У меня нет большого \ экспертного опыта работы с CMake, и пример, на котором я мог бы основать свою работу или уже работающий генератор, мог бы помочь.

Ответы [ 6 ]

24 голосов
/ 10 декабря 2012

Я считаю, что вам не нужно использовать автоматический скрипт для генерации CMakeLists.Txt, так как написать его очень просто после того, как вы поняли основную процедуру. Да, я согласен с тем, что понимание процедуры написания таковой, как описано в CMake Wiki, также сложно, так как это слишком подробно.

Очень простой пример, показывающий, как писать CMakeLists.txt показан здесь , который, я думаю, будет полезен всем, даже кому-то, кто собирается писать CMakeLists.txt в первый раз.

11 голосов
/ 12 сентября 2011

Я думаю, что вы делаете это с ног на голову.

При использовании CMake вы должны сами написать CMakeLists.txt. Как правило, вам не нужно обрабатывать разные компиляторы, так как CMake знает о них. Однако, если необходимо, вы можете добавить код в CMakeFiles, чтобы выполнять разные действия в зависимости от используемого вами инструмента.

11 голосов
/ 12 сентября 2011

Ну, у меня тоже нет большого опыта работы с Cmake, но для выполнения кроссплатформенности необходимо написать и изменить много файлов, включая файл CMakeLists.txt, я предлагаю вам использовать этот новый инструмент под названием ProjectGenerator Инструмент, он довольно крутой, он выполняет всю необходимую дополнительную работу и позволяет легко создавать такие файлы для сторонних источников без особых усилий. Просто внимательно прочитайте README перед его использованием.

Ссылка: http://www.ogre3d.org/forums/viewtopic.php?f=1&t=54842

5 голосов
/ 20 января 2016

CLion - интегрированная среда разработки, полностью основанная на файле проекта CMake.

Может генерировать файл CMakeLists.txt при использовании проекта импорта из источника

Однако вполне вероятно, что вам придется редактировать этот файл вручную по мере роста вашего проекта и для добавления внешних зависимостей.

0 голосов
/ 11 мая 2018

Может быть, это может быть полезно:

https://conan.io/

Автор произнес несколько выступлений о cmake и о том, как создавать модульные проекты с использованием cmake в CPPCon.Насколько я знаю, этот инструмент требует cmake, так что я предполагаю, что генерировать его, когда вы интегрируете новые пакеты или создаете новые пакеты.Недавно я прочитал кое-что о том, как написать описание проекта C / C ++ более высокого уровня, используя файл YAML, но не уверен, является ли он частью conan или нет (то, что я прочитал, было от автора conan).Я никогда не использовал, и это что-то ожидающее для меня, так что, пожалуйста, если вы используете это и соответствуете вашим потребностям, прокомментируйте свое мнение об этом и как это соответствует вашему сценарию.

0 голосов
/ 13 апреля 2018

Не уверен, является ли это проблемой, с которой столкнулся оригинальный плакат, но, как я вижу множество ответов «просто напишите CMakefile.txt» выше, позвольте мне кратко объяснить, почему генерация CMakefiles может иметь смысл:

а) У меня есть другая система сборки, которой я вполне доволен

(и охватывает большую многоплатформенную сборку большой коллекции взаимосвязанных общих и статических библиотек, программ, скриптов языковые расширения и инструменты, с различными внутренними и внешними зависимости, причуды и варианты)

б) Даже если бы я его заменил, я бы не стал рассматривать cmake.

Я посмотрел на CMakefiles, и меня не устраивает синтаксис и не в восторге от семантики.

c) CLion использует CMakefiles и только Cmakefiles (и выглядит несколько интересным)

Итак, чтобы дать CLion шанс (я люблю PyCharm, это заманчиво), но чтобы продолжать использовать мою систему сборки, я бы с удовольствием использовал какой-нибудь инструмент, который позволил бы мне воплощать в жизнь сделать generate_cmake и иметь все необходимые файлы CMake, сгенерированные на лету в соответствии с текущим информация извлечена из моей системы сборки. Я могу с радостью предоставить инструменту / скрипту информацию о том, из каких источников и заголовков состоит мое приложение, какие библиотеки и программы оно будет собирать, какие -I, -L, -D и т. Д. Предполагается установить для какого компонента и т. Д. и т.д.

Ну, конечно, я был бы намного счастливее, если бы JetBrains позволил предоставить какой-то прямой протокол подачи IDE необходимой информации. (скажем, позволил мне предоставить собственную команду для компиляции, запуска и генерировать любые метаданные, которые им действительно нужны - я полагаю, что они в основном нуждаются в incdirs и определениях, которые нужно реализовать на лету, для анализа кода и libpaths для установки LD_LIBRARY_PATH для отладчика), без ссылки на cmake. CMake-файлы в качестве протокола несколько сложны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...