Ведение Makefiles и CMakeLists.txt - PullRequest
       4

Ведение Makefiles и CMakeLists.txt

0 голосов
/ 27 февраля 2019

Когда вы работаете над очень большими проектами с большим количеством людей, поддерживать и Makefiles, и CMakeLists.txt может быть очень сложно.Я знаю, что CMakeLists.txt может генерировать Makefiles, но предположим, что я хочу скомпилировать свой код, используя make, и в то же время использовать IDE для своего рода intellisense.Как мне этого добиться?

В описываемом мной сценарии CMakeLists.txt файлы исчезнут, поэтому у меня не будет возможности генерировать решения с ними.

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019

Что касается intellisense, я бы сказал:

  • Visual Studio 2017 в качестве встроенной поддержки CMake, см. Объявление

  • CMake может сгенерировать файл json со всеми командами, см. CMAKE_EXPORT_COMPILE_COMMANDS , чтобы вы могли использовать его для выполнения умного clang завершения в vim

  • QtCreator как встроенная поддержка CMake, поэтому вы также получите завершение.

0 голосов
/ 01 марта 2019

Дополнительный совет: не пытайтесь смешивать файлы make ручной работы и CMake в течение всего времени проекта.

Обычным способом является создание файлов make с использованием cmake.Дополнительным компонентом cmake является кроссплатформенность, а в вашем случае поддержка nativ некоторыми IDE, например.QtCreator, CLion (awaik).Для широкого спектра других IDE cmake может генерировать файлы проекта.

Пример рабочего процесса с использованием QtCreator:

  • Создать простой CMakeLists.txt, по крайней мере, с именем проекта
  • Загрузить это в QtCreator
  • Добавить исходные файлы, обновить CMakeLists.txt из QtCreator
  • Построить из QtCreator, повторить

Нотот же CMakeLists.txt будет использоваться для создания файла make в командной строке.Или на вашем сервере сборки или в системе CI.

0 голосов
/ 27 февраля 2019

CMake не является менеджером сборки!
Это генератор файлов для других менеджеров сборки!

Таким образом, вы можете сгенерировать проект для IDE (Visual Studio, Xcode, CodeBlocks, ..) или сгенерироватьMakeFile, или что угодно, и CMake поддерживает.Поэтому я не понимаю, почему вы поддерживаете CMakeLists.txt и Makefiles одновременно.Просто сохраните CMakeLists.txt и затем сгенерируйте из него Makefiles.

Подробнее см. Документация CMake - генераторы :

Генераторы инструментов командной строки для сборки

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

В итоге вы сможете создавать файлы для IDE или Makefile для вашего любимого менеджера сборки без каких-либо сложностей.

В описываемом мной сценарии CMakeLists.txt файловисчезнет, ​​поэтому у меня не будет возможности генерировать с ними решения.

WAT?Вы делаете что-то очень странное и, скорее всего, неправильно, и не предоставили никаких подробностей об этом.

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