Ваш вопрос на самом деле два вопроса в одном:
1) Как мне написать свой код C ++ для включения правильных включаемых файлов на нужной платформе?
2) Как мне написать свой Makefile для работы на разных платформах?
На вопрос о коде C ++ уже дан ответ - найдите определения для конкретной платформы и используйте их, чтобы выяснить, на какой платформе вы находитесь.
Automake или scons довольно сложны и стоят вашего времени, только если вы собираетесь выпустить свой код для широкой аудитории. В случае внутреннего кода обычно достаточно «универсального» make-файла с включением для каждой платформы. Для Windows вы можете получить GNU Make для Windows (доступно по адресу здесь , или использовать nmake и ограничиться набором синтаксиса, общим для всех платформ.