Я использую 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», которые вполне допустимы, чтобы указывать их для одного исходного файла, но не для другого, и для той же статической целевой библиотеки.