Я обнаружил, что в Clion cmake всегда добавляется параметр -G "CodeBlocks - Unix Makefiles"
. Это сделало поколение camke другим при использовании cmake ../
Как видите, я не добавлял никаких параметров в параметры CMake. Но CLion добавляет -G "CodeBlocks - Unix Makefiles".
По данным реактивные мозги. Эта функция будет исправлена, но неизвестно когда. Генератор по умолчанию CLion CMake - CodeBlocks - Makefiles.
Если вы создадите OpenCV с помощью CLion, вы, наконец, обнаружите ошибку CMake, как показано ниже. Это вызвано -G "CodeBlocks - Unix Makefiles"
Problems were encountered while collecting compiler information:
cc1plus: fatal error: /--/--/cmake-build-release/modules/calib3d/perf_precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/calib3d/perf_precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/calib3d/perf_precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/calib3d/perf_precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/calib3d/perf_precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/calib3d/perf_precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/core/precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/core/precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/core/precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/core/precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/core/precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/core/precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/core/precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/core/precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/core/precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/core/precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/core/precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/core/precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/core/precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/core/precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/core/precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/core/precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/core/precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/core/precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/core/precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/core/precomp.hpp: No such file or directory
cc1plus: fatal error: /--/--/cmake-build-release/modules/core/precomp.hpp: No such file or directory
Пожалуйста, не рассматривайте отрицательные голоса (кстати, это не от меня) как оскорбление, а скорее как убедительный признак того, что качество вопроса должно быть улучшено. Мой комментарий предназначен как подсказка, чтобы помочь вам улучшить свой вопрос. Я делать хочу вам помочь и дать качественный ответ. Но для этого мне нужно правильно понять вашу проблему и, следовательно, мне нужна дополнительная информация.
Как я предполагаю, CLion автоматически добавит параметр -G и не может быть удален. Но вы знаете, что когда я пытаюсь собрать исходный код OpenCV в CLion. Есть много предупреждений о том, что perf_precomp.hpp
precomp.hpp
test_precomp.hpp
связаны с этим параметром. Потому что, когда я использую командную строку cmake, ошибок снова нет. Я думаю, что это может быть та же проблема, что и github.com/sakra/cotire/issues/124.
Чтобы ответить на ваш вопрос: вы не можете изменить генератор make-файлов в CLion, и вам это не нужно.
Позвольте мне объяснить, почему:
Если вы внимательно прочитаете вывод, вы увидите следующее непосредственно перед всеми сообщениями об ошибках:
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/opencv/cmake-build-debug
Это указывает на то, что фактическая конфигурация проекта CMake выполнена успешно. Кроме того, CLion заполняет раскрывающийся список Run/Debug Configuration множеством целей. Конфигурация CMake просто отличная, вы можете кодировать, компилировать и запускать все. Если бы CMake потерпел неудачу, это было бы не так.
Однако после того, как CMake завершится, CLion хочет выполнить какую-то дополнительную магию (я не знаю об этом). Отсюда и все сообщения об ошибках.
Чтобы избавиться от него, вы должны добавить следующий флаг к параметрам CMake в диалоговом окне конфигурации CMake:
-DENABLE_PRECOMPILED_HEADERS=OFF
.
Кстати: тип сборки определяется через выпадающее меню опции «Тип сборки:», нет необходимости устанавливать его снова в параметрах CMake.
В заключение: ваш вопрос является типичным случаем XY-проблема. Вы хотите решить проблему, указанную в сообщениях об ошибках, выдаваемых CLion. Но вместо того, чтобы спросить об этом и предоставить необходимую информацию в своем вопросе, вы были «спрашивая о вашей попытке решения, а не о вашей реальной проблеме».
Я только что нашел недостающую информацию в вашем сообщении с ответом, а не в вопросе, где он был. Так что было бы здорово, если бы вы могли объединить свои сообщения в всеобъемлющий вопрос.
Это ни в коем случае не должно быть грубым или оскорбительным. Я просто хочу дать вам подсказку о том, как вы могли бы улучшить свои вопросы, чтобы предотвратить отрицание или остаться без ответа.
Вы указали, где проблема, но почему генератор CMake CodeBlocks сделает это, нам пока неизвестно. Честно говоря, спасибо за ваше время и действительно постарайтесь помочь мне решить проблему. Прошу прощения за мои оскорбительные выражения.
@EricLu Вы правы, причина сообщений об ошибках до сих пор не ясна. Однако похоже, что это не связано с генератором, поскольку при запуске CMake из командной строки ошибка не возникает: cmake -H/tmp/opencv -B/tmp/opencv/build -G "CodeBlocks - Unix Makefiles"
Извините, вы правы, это действительно похоже на магию Клиона. С системой генератора блоков кода ошибка не может произойти, моя ошибка.
Почему вас беспокоит то, что CLion делает внутри, чтобы ваш код работал? Пожалуйста, уточните это более подробно, так как кажется, что ваша реальная проблема заключается в чем-то другом.