cmake set_property для файлов SOURCE с COMPILE_FLAGS - PullRequest
2 голосов
/ 24 сентября 2011

Я использую CMake 2.8.1 (пробовал это на CMake 2.8.5 тоже).Я использую генератор Visual Studio для VS2008.Я хотел бы выборочно применять флаги компиляции к некоторым некоторым исходным файлам иначе, чем к другим файлам, и все эти файлы собираются в одну и ту же статическую библиотеку (разделение библиотеки на две разные цели в настоящее время не вариант).Я не могу использовать set_target_properties в этом случае, потому что флаги компиляции должны отличаться.Однако я обнаружил кое-что довольно странное.Следующие работы (определено, что параметр /flubber отображается в полях AdditionalOptions в файле .vcproj, который генерирует CMake):

set_property(SOURCE file1.cpp file2.cpp
  PROPERTY COMPILE_FLAGS /flubber
  )

Но это не работает:

set_property(SOURCE file1.cpp file2.cpp
  PROPERTY COMPILE_FLAGS /GR
  )

Почему CMake отфильтровывает или игнорирует параметр /GR?Это ошибка CMake или преднамеренная?

Теперь этот вопрос немного надуманный, учитывая, что около VS2005 опция / GR была определена как включенная по умолчанию (дает RTTI), поэтому у меня действительно нетуказать это.Но дело не в этом, потому что есть другие флаги, начинающиеся с «/ G», которые вполне допустимы, чтобы указывать их для одного исходного файла, но не для другого, и для той же статической целевой библиотеки.

1 Ответ

4 голосов
/ 24 сентября 2011

Visual Studio предоставляет специальный параметр для /GR флаг:

enter image description here

cmake знает об этом и преобразует ваш флаг /GR в эту опцию. Если вы откроете свой сгенерированный cmake файл проекта (.vcproj) с помощью блокнота, то вы увидите дополнительный атрибут RuntimeTypeInfo="TRUE" в конфигурации вашего файла:

/flubber добавлен флаг:

<Tool Name="VCCLCompilerTool" AdditionalOptions="/flubber" />

/GR добавлен флаг:

<Tool Name="VCCLCompilerTool" RuntimeTypeInfo="TRUE" /> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...