Я работаю над кроссплатформенным проектом, в котором мы создаем несколько библиотек с CMake для Linux, macOS и Windows.
В наших сборках POSIX (Linux / macOS) мы используем простое определение в CMake:
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DFILENAME='\"$(notdir $<)\"'")
notdir
на самом деле является функцией make
. К сожалению, в Windows нет эквивалента make
, и мы используем ninja для сборки наших сборок на базе Windows.
Существует ли аналогичный способ предоставления FILENAME
для наших сборок на базе Windows? Я проверил Руководство по ниндзя , но не смог найти решение.
Переключение на MSBuild не является вариантом, потому что мы используем CMAKE_C_COMPILER_LAUNCHER
-функцию для предварительной обработки кода для некоторых сборок (в основном совместимость с C89).