Проверка флагов оптимизации компилятора в waf - PullRequest
2 голосов
/ 01 ноября 2011

Я начал использовать систему сборки waf как альтернативу CMake. Пока что это был отличный опыт. Однако я не могу найти хороший способ условно передать флаги оптимизации компилятору. Некоторый код, который я пишу, извлекает выгоду из определенных флагов оптимизации, которые доступны только в последних выпусках gcc, но я хочу, чтобы мой код был максимально переносимым. Поэтому я хочу проверить, поддерживает ли компилятор эти флаги, прежде чем добавить их в список флагов cxx, используемых для компиляции. Какой самый простой способ сделать это?

1 Ответ

4 голосов
/ 19 ноября 2011

Вы можете использовать функцию stash в ConfigSet cfg.env для тестирования CFLAGS с фрагментами кода:

  • stash cfg.env
  • добавить CFLAGS
  • выполнитьпроверьте, если проверка не удалась, восстановите cfg.env

И имейте в виду, что определенные CFLAGS не переносимы, если вы измените компилятор или целевую архитектуру, они не будут работать.Возможно, вы хотите, чтобы ваш код работал с другим компилятором, поэтому вы должны включать (добавлять) определенные CFLAGS только тогда, когда вы можете идентифицировать компилятор.

Если ваш код с открытым исходным кодом, не беспокойтесь о навязывании CFLAGS, если ваш кодне критично к производительности.Большинство дистрибутивов Linux будут добавлять глобальные флаги оптимизации в зависимости от цели.

...