Как заставить CMake выбирать между несколькими компиляторами?

Предположим, у меня есть система с несколькими компиляторами C / C ++ — различные версии GCC, clang и ICC. Также предположим, что у меня есть проект CMake C / C ++, который имеет определенные требования и определенные предпочтения относительно использования компилятора C / C ++; и усложнить ситуацию, предположить, что эти требования и предпочтения генерируются динамически на основе комбинации параметров проекта, которые я установил (с ccmake или иным образом).

Теперь другие ответы об использовании компилятора, отличного от стандартного, предлагают установить переменные среды CC или CXX — но это явно неуместно.

Есть ли способ получить CMake для:

  1. Определите доступные компиляторы.
  2. Выберите тот, который ему нравится, на основе каких-то правил / механизма ранжирования?

Заметки:

  • CMake 3.0. Вы можете использовать более новую версию CMake, но сделайте это явно, пожалуйста.
  • Выбор C или C ++ в этом вопросе мотивирован моими собственными потребностями, но, конечно, это может быть какой-то другой язык, если это решение может быть адаптировано.

2

Решение

Исторически, и, вероятно, также технически, компилятор C является базовым для запуска CMake. Многие команды полагаются на наличие компилятора, например, обнаружение символов или попытка скомпилировать кусок кода.

Насколько я знаю, нет возможности протестировать несколько компиляторов и выбрать один. Чтобы получить это, вы должны

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

Мой совет: примите принцип работы CMake и научите его пользователям.

1

Другие решения

Других решений пока нет …