Я понимаю, что Jam строит существующие проекты, а CMake генерирует проекты для сборки. Но, учитывая, что я предпочел бы генерировать проекты, которые я мог бы использовать в различных IDE, а не пытаться интегрировать Jam в эти IDE, есть ли у кого-нибудь опыт/успех превращения Jamfile в файл CMakeLists.txt?Миграция с Jam на CMake
ответ
Итак, в итоге я решил, что лучше всего начать проект CMAKE с нуля. Наш проект Jam был таким беспорядком, я не хотел переносить крупицу нашей сборки спагетти.
Я нашел эти ресурсы, чтобы быть наиболее полезным
http://www.cmake.org/Wiki/CMake_Useful_Variables http://www.cmake.org/cmake/help/v2.8.10/cmake.html
Раньше я использовал Jam для всех моих проектов Linux, поскольку это было проще, чем обычные make-файлы. Затем я обнаружил CMake и не вернулся. Это так же легко писать файлы CMakeLists.txt, как и писать Jamfiles, и вы получаете бесплатную поддержку IDE на платформе, хотя ИМО проекты IDE не так чисты, как что-то, созданное вручную.
Из того, что я видел, очень мало людей используют Jam в наши дни, несмотря на множество преимуществ. Он утверждает, что способен строить на разных платформах, но в то же время он, похоже, больше не пользуется активным развитием, поэтому я склонен недоверять его многоплатформенным требованиям.
Насколько я знаю, нет инструмента для автоматической конвертации иерархии Jamfiles в иерархию файлов CMakeLists.txt, хотя такой инструмент, безусловно, будет осуществимым проектом. Однако, благодаря непопулярности Jam и, в меньшей степени, CMake, если вы или я не находим какое-то свободное время, такой инструмент не находится на горизонте. :(
Если ваш проект не слишком сложен, некоторые простой поиск и замены должны преобразовать Jamfile в файл CMakeLists.txt. Если ваш проект является сложным, то преобразование их вручную, вероятно, ваш лучший выбор.
Некоторые простые преобразования:
HDRS += a.h b.h c.h ;
становитсяinclude_directories(a.h b.h c.h)
Main HelloWorld : main.cpp utils.cpp ;
становитсяadd_executable(HelloWorld main.cpp utils.cpp utils.h)
Library helper : helper.cpp
становитсяadd_library(helper STATIC helper.cpp helper.h)
SubDir foo ;
становитсяadd_subdirectory(foo)
LinkLibraries HelloWorld : libhelper ;
становитсяtarget_link_libraries(HelloWorld helper)
В среде IDE проектов, CMake сгенерированные автоматически не включают в себя связанные файлы заголовков, поэтому я явно включены важные в приведенных выше примерах. Хороший пример here, если вы его еще не видели.
Для преобразования Jam в CMake может быть полезно попробовать расширить vcproj2cmake для реализации Jam-парсера (генераторная часть для текстовых потоков синтаксиса CMake теперь достаточно способна).
- 1. Boost Jam vs Jam
- 2. Создать папку с помощью Jam
- 3. Запуск Jam Java-трафика
- 4. Что такое Boost Jam и Jam стоит мигрировать?
- 5. Code jam exercise python
- 6. Добавить этот плагин ... brain-jam
- 7. Jam устарел и был удален
- 8. Миграция с JSP на Freemarker
- 9. Миграция с HTTP на HTTPS
- 10. Миграция с WAMP на LAMP
- 11. Миграция с JSF на AngularJS
- 12. Миграция с TFS на VSTS
- 13. Миграция с Android на iPhone
- 14. Миграция с blogger на wordpress
- 15. Миграция с MySQL на ящик
- 16. Миграция с TFS на Git
- 17. Миграция с PVM на MPI
- 18. Миграция с VB.net на C#
- 19. Миграция с Marklogic на MySql
- 20. Миграция с MSTest на XUnit
- 21. Миграция с Joomla на Yii2
- 22. Миграция с JIRA на ралли
- 23. Миграция с MySQL на PostgreSQL
- 24. Миграция с git на Perforce
- 25. Миграция с Oracle на VoltDB
- 26. Миграция с Drupal на Wordpress
- 27. Миграция с CoffeeScript на es6
- 28. Миграция с TFS на GITHUB
- 29. Миграция с Flyspray на Redmine
- 30. Миграция с AndroidHttpClient на URLConnection