Как отключить умолчательную опцию /Zm при генерации проекта средствами cmake для Visual Studio?

Доброго времени суток,
небольшая предыстория: есть проект, который успешно собирается cmake-ом при использовании стандартных генераторов и компиляторов. Возникла необходимость потестировать его с clang. Если использовать clang-компилятор clang-cl.exe (в соответствие с документаций, повторяющий поведение стандартного cl), задавая cmake -T LLVM-vs2014, то в принципе всё работает, но не устраивает как раз "повтор поведения". Если использовать Microsoft'овский fork CMake из ветки https://github.com/Microsoft/CMake/tree/feature/cl... вместе с clang-ом, добавленным в последние версии VS, то проект тоже относительно хорошо собирается (используя -T v140_Clang_3_7), имея проблемы с инклудами и игнорируя некоторые опции clang.

Суть вопроса: если попробовать использовать скомпилированный "настоящий" clang/clang++ (немного поменяв шаблоны MSBuild'а), то независимо от версии CMake (установленная 3.5.1 или 3.4.2 из форка от MS), CMake вылетает с ошибками:

-- The C compiler identification is Clang 3.9.0
-- The CXX compiler identification is Clang 3.9.0
Check for working C compiler: D:/Temp/llvm090415/install/bin/clang.exe -- broken
CMake Error at D:/Program Files (x86)/CMake351/share/cmake-3.5/Modules/CMakeTestCCompiler.cmake:61 (message):
The C compiler "D:/Temp/llvm090415/install/bin/clang.exe" is not able to
compile a simple test program.
....
clang: error: unsupported use of internal gcc -Z option '-Zm'

Опция -Zm относится к MS VC++ (https://msdn.microsoft.com/ru-ru/library/bdscwf1c.aspx), но по непонятной причине она всегда дописывается к параметрам компиляции, даже если я явно задаю -DCMAKE_C_FLAGS/-DCMAKE_CXX_FLAGS (она дописывается после их содержимого); я не смог найти её ни в одном из шаблонов CMake (из share), ни в одном из шаблонов MSBuild, ни в исходниках CMake. Технически я могу попробовать дописать парсинг (и игнор) этой опции в исходниках clang, но может есть более простые варианты от неё избавится? И откуда она вообще берется, при отсутствии в шаблонах MSBuild'а?

P.S. Вариант с nmake для этого проекта вообще не работает, даже со стандартным компилятором.
  • Вопрос задан
  • 495 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы