Вопрос

Наша система сборки каким -то образом изменилась, так что оптимизированные сборки больше не добавляют -dndebug в линию компиляции. Я искал наши makefiles и не нахожу это.

Итак, вопрос в том, откуда возникает -Dndebug для большинства людей и как это изменилось? До того, как у нас появился -dndebug, и я не думаю, что это было удалено из любого из наших макияж.

Спасибо.

-Силлиам

Это было полезно?

Решение

Поскольку компилятор не может самостоятельно решать, когда добавить определение NDEBUG, а когда нет, флаг всегда устанавливается либо файлом Makefile, либо с файлом проекта (в зависимости от вашей системы сборки).

Другие советы

На это действительно сложно ответить, поскольку вы не указали используемую систему сборки. Если вы используете AutoConf, то или ожидается, что пользователь будет размещать -dndebug в CPPFLAGS вручную (или, возможно, вы установили его из файла config_site, который изменился), или configure.ac может настроить пользовательскую переменную для настройки ndebuguguguguge , или configure.ac может вызвать AC_HEAHEDER_ASSERT, в этом случае добавление-DISABLE-ASSERT для вызова настройки будет определять NDEBUG в config.h. Есть много способов, которыми это может произойти.

По моему опыту, -dndebug был пройден вручную, т. Е. Задачи были написаны таким образом, что флаг передается при строительстве в режиме выпуска.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top