Я хотел бы получить некоторую ясность относительно типов сборки cmake.
В частности, мне не ясно, будет ли установка типа сборки также изменять флаги сборки, или это просто «метка», которая используется внутри для конфигурации сборки.Например, в случае сборки выпуска:
set(CMAKE_BUILD_TYPE Release)
будет ли компилятор автоматически указывать флаг O3
?или мне нужно явно указать это?
Один ответ, который я нашел, устанавливает и тип сборки, и явно устанавливает флаги компилятора:
Оптимизация в CMake по умолчанию
Но другой поток, который я нашелонлайн предполагает наличие значений по умолчанию:
https://cmake.org/pipermail/cmake/2016-May/063379.html
Если в типе сборки указаны некоторые флаги компилятора, где я могу найти документацию для этого?Я хотел бы знать, какие флаги устанавливает каждый тип сборки.
РЕДАКТИРОВАТЬ:
Для дальнейшего использования, если вы хотите найти конкретные флаги для вашего компилятора (например, gnu в случае gcc или g ++), то вы можете клонировать репо, который Kamilссылки, перейдите в папку modules / compilers и попробуйте команду вроде:
grep -r _INIT . | grep -i gnu
На самом деле, как указывает Камил, эти флаги также будут такими же, как те, которые используются Clang, так как файл Clang Clangвключает в себя GNU один.