2016-10-25 5 views
-1

Когда я создаю проект CMake, сканирование зависимостей происходит медленно. Исследуя с Htop для моего большого проекта указал мне на командуСканирование зависимостей в проекте CMake происходит медленно

/usr/bin/cmake -E cmake_depends Makefiles [...]

, который работает на одном потоке. Может ли это ускориться? Может быть, с параллелизмом/многопоточным?

«Решение»

Я использую ниндзя теперь, что гораздо быстрее обнаруживать DEPS и сбор необходимых данных для compillation.

Благодарим за ответы!

+0

Не могли бы вы предоставить дополнительные сведения? Например. какая ОС, какая версия CMake и т. д. Как долго это занимает в данный момент и какова ваша цель? Я бы посмотрел, например. перекомпилировать CMake и посмотреть, где вы находитесь (см. также [здесь] (http://stackoverflow.com/questions/37327526)). Потому что просто сделать что-то многопоточное, которое не было написано для многопоточности, непростая задача для компилятора в основном в зависимости от того, как организованы данные (см. Автоинтерактивность, например [здесь] (https://msdn.microsoft.com /en-us/library/hh872235.aspx)). – Florian

+0

Я добавил информацию о версии ОС и CMake к вопросу. Для поиска зависимостей требуется около 15 секунд.Сам процесс компиляции и связывания уже очень быстрый (и может быть многопоточным). – Migsi

+2

Я изо всех сил стараюсь понять суть: конфигурация CMake в теории - редкое событие. Кроме того, вы можете сохранить в переменной кэша результат сканирования зависимостей и избежать сканирования при повторном повторе CMake. Еще один момент против многопоточности: при сканировании зависимостей у него есть горло бутылки в доступе на диск, что в общем случае невозможно распараллелить. Используйте твердотельный диск, если вы этого еще не сделали. – Antonio

ответ

3

Строго говоря, это не вопрос CMake, а вопрос о том, как использовать ваши инструменты построения.

Используйте лучший инструмент для сборки!

НЕ ИСПОЛЬЗОВАТЬ PCH для проектов
DO включает обычно используемые системы, выполнения и заголовков сторонних в PCH
DO включает редко меняющийся конкретный проект заголовки в PCH
НЕ включайте заголовки, которые часто меняются
DO аудита PCH регулярно, чтобы поддерживать его в актуальном состоянии с оттоком продукта
Пользуется /MP
DO Удалить /Gm в пользу /MP
DO разрешить конфликт с #import и использовать /MP
Пользуются Linker переключателя /incremental
Пользуется компоновщик переключатель /debug:fastlink
DO рассмотреть вопрос об использовании третьи стороной построить ускоритель

  • Рассмотрите более быстрое оборудование
Смежные вопросы