Я занимался кроссплатформенными проектами, в которых использовались «родные» системы сборки на обеих платформах (файлы vsproj на windows и make-файлы на linux), но поддерживать оба файла проекта было определенно затруднительно. Так что да, я бы согласился с другими предложениями, которые следует начинать с надежной утилиты для кросс-платформенной сборки. CMake или, возможно, Boost build кажутся достойными вариантами - вероятно, есть много других.
Когда дело доходит до сторонних библиотек, вам нужно придерживаться того, что является надежно протестированным кроссплатформенным. Boost - лучшая библиотека общего назначения для c ++ (да, вы видите, что она упоминается здесь почти в каждом потоке c ++ ... но это потому, что на самом деле - это хороший набор полезных вещей ). Что касается XML, HTTP, библиотек изображений, пользовательского интерфейса - здесь есть все хорошие кроссплатформенные варианты - просто посмотрите вокруг или спросите здесь, есть ли у вас особые требования. Что бы вы ни делали, не используйте какую-либо библиотеку из CodeProject или другого ориентированного на MS сайта, которая была протестирована только с Visual Studio 6 - это просто приведет к страданиям. В наши дни большинство библиотек GNU основано на Windows, поэтому вы должны быть в безопасности с этим.
Хотя это будет заманчиво, постарайтесь свести к минимуму платформу #ifdefs
в своем коде - вместо этого предпочтительнее абстрагировать любые специфичные для платформы вещи в библиотеке, где это возможно.
Удачи!