Как я могу использовать Boost.wave в качестве препроцессора, используя Cmake

StackOverflow https://stackoverflow.com/questions/4406600

  •  25-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь использовать Boost.wave как препроцессор вместо препроцессора, который поставляется с компилятором. Я не могу выяснить, как это достичь.

Я использую Cmake в качестве генератора системы сборки и как я могу указать, что мой препроцессор является Boost.wave. Это должно работать на обоих Windows (MSVC), так и Linux (GCC).

Googling и поисковые архивы переполнения стека не дают никакого ответа


Компилятор в любом случае предпроблессет файл. Так выглядит как два шага предварительной обработки участвуют здесь.

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

Решение

Это два шагового процесса.

Во-первых, вам придется сказать Cmake использовать волну как пользовательскую команду: используйте Cmake's add_custom_command. Отказ Как только вы определили эту команду, она будет вызвана всякий раз, когда соответствующие для пользовательской команды зависимостей.

Во-вторых, вам придется выяснить все предопределенные MACROS и (System) включают пути, которые использует ваш компилятор. Волна ничего не знает о конкретном компиляторе. Следовательно, для того, чтобы предварительно получить файл правильно для конкретного компилятора, все (актуальные) предопределенные макросы (которые обычно предопределены компилятором), и вся система включает пути (которые обычно известны компилятору по умолчанию), необходимо пропустить при вызове при вызове Волна. Если положить все эти варианты в командную строку волны, слишком утомительна (и она, вероятно, есть), вы можете создать Варианты Файл для волны (добавьте его в командную строку с @cfgfile). Вот пример для MSVC 2005:

-SC:\Program Files (x86)\Microsoft Visual Studio 8\VC\include
-SC:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\Include
-D_MT
-D_MSC_VER=1400
-D_MSC_FULL_VER=140050727
-D_MSC_EXTENSIONS
-D_M_IX86

Конечно, вы можете добавить другие варианты для волны здесь. Различные файлы конфигурации для разных компиляторов должны облегчить управление от внутренней части CMake.

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