В настоящее время я работаю над использованием cmake для создания некоторых проектов, основными платформами которых являются Visual C ++, MinGW GCC и Linux GCC.При сборке с GCC мне нужно указать опцию компилятора -Wno-invalid-offsetof
.
Мое текущее исправление выглядит следующим образом ...
if ( "${CMAKE_GENERATOR}" MATCHES "^Visual Studio"
OR "${CMAKE_GENERATOR}" MATCHES "^NMake"
)
set (CPPLIB_COMPILER_OPTS "")
else ()
set (CPPLIB_COMPILER_OPTS "-Wno-invalid-offsetof")
endif ()
...
set_target_properties(sh_core PROPERTIES COMPILE_FLAGS "${CPPLIB_COMPILER_OPTS}")
# repeated for all targets
Это работает, но при условии, что все генераторы, кромеВизуальная студия, которую будут создавать с помощью gcc, явно небезопасна.Для начала, есть генераторы IIRC для компиляторов Borland.Что еще более важно, использование make не всегда означает использование gcc.
Другими компиляторами, которые я, вероятно, буду использовать, являются llvm-gcc и clang.К счастью, я думаю, что даже clang поддерживает gcc-совместимые опции.Но эта логика хороша только до тех пор, пока соответствующий код никогда не будет выпущен.
Cmake, кажется, проверяет доступные компиляторы и генерирует make-файл специально для этого компилятора (возникает вопрос - почему бы по крайней мере не иметь опциюсборки проекта напрямую, без необходимости посредника, такого как make?).
В таком случае я надеялся, что смогу напрямую протестировать gcc в моих файлах CMakeLists.txt.Пока, однако, я не могу найти подходящую переменную для тестирования или любое другое очевидное решение.
Возможно ли это?