Предположим, что мой C++ соответствует стандартам, и я не полагаюсь на сторонние библиотеки. Каковы обычные подводные камни, с которыми можно столкнуться при замене «g ++» на «clang ++» в make-файле? Например, несовместимые параметры компилятора, различные требования к порядку параметров, некоторые другие ограничения и т. д.
TL; DR: Clang очень совместим с GCC - просто попробуйте.
В большинстве случаев Clang можно использовать как замену GCC (clang
и clang++
- «драйверы, совместимые с GCC»). Clang был разработан с учетом совместимости с GCC, и большинство параметров, доступных в GCC, также должны поддерживаться Clang.
По моему опыту взаимозаменяемого использования GCC и Clang в нескольких проектах, я не припомню ни одного случая, когда Clang не компилировался, а GCC преуспел.
Однако, в зависимости от размера и сложности вашего проекта, миграция может быть не совсем гладкой. Есть несколько факторов, которые могут оказать влияние, включая ошибки компилятора и различную генерацию кода, которые могут повлиять на производительность приложения, а в редких случаях даже на функциональность приложения. Смена компиляторов - это большое изменение, поэтому, как только вы сможете успешно построить, рекомендуется запустить все доступные тесты и тесты.
Вот лишь несколько примеров возможных несовместимостей SO для GCC и Clang. Скорее всего, вы не столкнетесь с такими проблемами.
RE: порядок опций - и GCC, и Clang принимают флаги компилятора в любом порядке.