Самый быстрый способ собрать кучу DLL-файлов с одинаковыми настройками в VS 2008 - PullRequest
1 голос
/ 16 января 2009

В настоящее время я портирую приложение POSIX C ++ для работы в Windows без Cygwin или чего-либо еще. Пока проблем нет. Теперь приложение (ZNC, IRC Bouncer, если вам интересно) поддерживает загрузку модулей из файлов общей библиотеки .so в Linux / BSD и т. Д.

Я перенес основной исполняемый файл без особых проблем, все обернуто в файл проекта VS 2008 и прочее. Теперь все упомянутые модули представляют собой отдельные файлы .cpp, которые нельзя связать с исполняемым файлом, поскольку все они экспортируют символы, такие как GetVersion (). И это все равно неосуществимо.

Итак, короче говоря, я хочу (должен) скомпилировать все модули (более 20) в отдельные файлы DLL. Однако я не хочу создавать отдельный проект VS для каждого. Что означает, что мне, вероятно, придется создать make-файл? Или что-то подобное? Я никогда не делал этого раньше в Windows, так что это мой вопрос. Каков наилучший подход для компиляции набора .cpps в отдельные файлы DLL (с ​​одинаковыми настройками, все удобно хранящиеся в одном месте / файле)?

Заранее спасибо! И.Р.

Ответы [ 2 ]

1 голос
/ 16 января 2009

cmake прекрасно работает с MSVC и является кроссплатформенным. Вы можете перечислить все свои библиотеки в одном (или, по вашему выбору, по одной на DLL) файле CMakeList.txt, и он сгенерирует решение со всеми файлами проекта. В Unix он генерирует make-файлы.

О, а в Windows make называется nmake, если я не ошибаюсь.

1 голос
/ 16 января 2009

Насколько я знаю, нет встроенного способа сделать это. Вот что я хотел бы сделать:

  1. Преобразуйте один из модулей в DLL, убедитесь, что он работает и все кошерно.

  2. Напишите скрипт для генерации других 20 vcproj из одной работающей ссылки vcproj. Я не знаю деталей вашей модульной системы, поэтому я не уверен, насколько это будет прямолинейно.

  3. Добавьте их в раствор.

Надеюсь, это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...