1) Структура может быть такой же, но если вы включаете файлы в подкаталоги, убедитесь, что вы используете '/
, а не \
. Первый также будет работать на Windows.
2) Я бы проверил cmake (http://www.cmake.org/) для управления сборкой на нескольких платформах. Это отнимет у вас много боли.
3) Используйте STL и Boost столько, сколько сможете. Эти библиотеки были разработаны с учетом этой проблемы. Это покроет огромную часть того, что вам может понадобиться. Вы уже выбрали отличную библиотеку Qt, поэтому ваш графический интерфейс также не является проблемой. Вместе с этими тремя вы уже прошли большую часть пути. Тем не менее, вам, возможно, придется сделать что-то, что не зависит от платформы и не охватывается ни одним из них. Для этого я предлагаю вам написать класс, который предоставляет согласованный интерфейс для всех платформ, и скрыть тщательность директив препроцессора в исходном файле. Крайне важно предоставить согласованный интерфейс.
4) Используйте SVN. Я не знаю, как это сделать на других компиляторах, но в Visual Studio тривиально получить последнюю версию и вставить ее в какой-то файл, который затем включается в ваш проект. Вы можете использовать события сборки, чтобы сделать это. Извините, я не могу подробно остановиться на других платформах.
Кроме того, если вам нужно выходить за пределы STL, Boost, Qt и так далее, помните о документации вызовов API на всех платформах. В прошлом я был укушен поведением fseek()
вызова API, который записывал байты для разметки к месту назначения в одной реализации, но не в другой. Это может быть основной причиной головной боли и еще одной причиной, чтобы попытаться придерживаться проверенных и проверенных библиотек, как упомянуто выше.