Как подготовить кодовую базу для компиляции как на Windows, так и на Unix-системах - PullRequest
2 голосов
/ 07 февраля 2011

Меня интересуют различные решения для простой компиляции моего кроссплатформенного приложения как для Windows, так и для Unix.

Сейчас я использую make-файл в Ubuntu, но прежде чем моя кодовая база станет больше, я бы хотелвыполните шаги, необходимые для его компиляции в Windows, а затем продолжайте делать это регулярно, чтобы убедиться, что он все еще работает.

Я бы предпочел не загрязнять мой репозиторий кодовой базы SVN несколькими решениями "makefile", такими как решения VC ++и так далее, я бы хотел более автоматический способ.Я пытался использовать mingw с make для windows, но кажется, что моя вторая версия расширения не работает в версии для Windows (или что-то в этом роде).Он не компилировался, а также жаловался на то, что _winNT или что-то в этом роде не определено.

Как мне подготовить базу кода для кроссплатформенной простой компиляции?Такие вещи, как buildtools, возможно, автоматически генерировать VS-файл из make-файла или что-то подобное.Возможно, какая-то магия препроцессора в файле stdinc?

Спасибо!

Ответы [ 2 ]

6 голосов
/ 07 февраля 2011

Я укажу вам CMake , который используется высококлассными проектами, такими как MySQL, KDE или Compiz.

Он имеет возможность генерировать собственные файлы сборки дляцелевая система, такая как Makefiles для платформ на основе Unix, и файлы проектов и решений Visual C ++ для Windows.

Чтобы разобраться с различиями в платформах, я приглашаю вас посмотреть мой предыдущий пост на эту тему:* C ++: Платформо-зависимые типы - лучший шаблон

0 голосов
/ 07 февраля 2011

Я бы пошел на ускоренную сборку: http://www.boost.org/doc/tools/build/doc/html/index.html

Вы можете выбрать свою платформу и свой компилятор из командной строки (в командной строке DOS в Windows), и все остальное работает.

bjam release gcc,

или

bjam debug msvc

Вы можете добавить дополнительные флаги для каждого компилятора (если вы этого хотите) или разных версий компилятора.

...