Как заставить CMake выбирать между несколькими компиляторами? - PullRequest
0 голосов
/ 28 апреля 2018

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

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

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

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

Примечания:

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

1 Ответ

0 голосов
/ 28 апреля 2018

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

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

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

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

...