Как я могу использовать Boost.wave в качестве препроцессора, используя Cmake
-
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.