cmake: set -O2 optimization level only if CMAKE_BUILD_TYPE is not specified #66

Merged
Alexander_KS merged 2 commits from cmake_linux_opt_level into master 2025-09-25 18:13:00 +00:00
Collaborator

Сейчас для linux всегда ставится уровень оптимизации -O2, независимо от CMAKE_BUILD_TYPE
Это ведёт к следующим проблемам:

  • при сборке Debug включаются O2 оптимизации, что мешает отладке
  • при сборке Release используется O2, а не O3
  • флаг O2 и флаги от типа сборки перемешиваются: например, при сборке Release получается что-то вроде -std=c++17 -O2 -O3 -DNDEBUG, что не очень хорошо

Решение: устанавливать O2 только если CMAKE_BUILD_TYPE не определён

Сейчас для linux всегда ставится уровень оптимизации -O2, независимо от CMAKE_BUILD_TYPE Это ведёт к следующим проблемам: - при сборке Debug включаются O2 оптимизации, что мешает отладке - при сборке Release используется O2, а не O3 - флаг O2 и флаги от типа сборки перемешиваются: например, при сборке Release получается что-то вроде `-std=c++17 -O2 -O3 -DNDEBUG`, что не очень хорошо Решение: устанавливать O2 только если CMAKE_BUILD_TYPE не определён
xnpster added 1 commit 2025-09-25 10:53:22 +00:00
Owner

а зачем тогда оставлять этот флаг, если в релизе O3, тогда надо удалить эту строчку вовсе.

а зачем тогда оставлять этот флаг, если в релизе O3, тогда надо удалить эту строчку вовсе.
Author
Collaborator

Чтобы в случае, если CMAKE_BUILD_TYPE не указан, выставлялся хотя бы -O2

Чтобы в случае, если CMAKE_BUILD_TYPE не указан, выставлялся хотя бы -O2
Owner

так если он не указал, вставляется O3 - разве нет? надо тогда разделять на дебаг - релиз. Наверно это лишнее все таки.

так если он не указал, вставляется O3 - разве нет? надо тогда разделять на дебаг - релиз. Наверно это лишнее все таки.
xnpster added 1 commit 2025-09-25 17:49:28 +00:00
Alexander_KS merged commit cad0a0b217 into master 2025-09-25 18:13:00 +00:00
Alexander_KS deleted branch cmake_linux_opt_level 2025-09-25 18:13:00 +00:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Alexander_KS/SAPFOR#66