Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.141.193.158] |
|
Сообщ.
#1
,
|
|
|
В boost есть bjam, но посмотрел вроде последняя версия 2010 год, оптимально будет cmake, что используете?
|
Сообщ.
#2
,
|
|
|
cmake - кроссплатформенная шляпа, это ее выгодно отличает от других инструментов.
|
Сообщ.
#3
,
|
|
|
bjam тоже можно использовать под винду и линукс.
|
Сообщ.
#4
,
|
|
|
Cmake. Без вариантов.
|
Сообщ.
#5
,
|
|
|
Флекс! На напиши пару слов почему. Я так понимаю, что тот же bjam уже можно сказать не используется.
|
Сообщ.
#6
,
|
|
|
Цитата ter_nk_ @ Флекс! На напиши пару слов почему. Потому что: - Поддерживает кучу платформ, компиляторов и систем сборок. - Поддерживает кучу библиотек и фреймворков (в плане их поиска) - Достаточно прост в освоении. Порог входа относительно невысокий. - Позволяет делать довольно замороченные сборочные скрипты и гибкую конфигурацию сборки. - Почти все проекты, в которых я участвовал и фреймворки, которые использую, поддерживают сборку на базе CMake. |
Сообщ.
#7
,
|
|
|
Спасибо! Потом возможно появятся уже конкретные вопросы.
|
Сообщ.
#8
,
|
|
|
Если есть куча файлов в разных директориях, где-то хедеры, где-то срр, есть какие-нибудь автоконфигурационные тулзы, чтоб хотя бы посоздавали CMakeLists.txt ?
|
Сообщ.
#9
,
|
|
|
В CMake есть замечательная команда file, которая найдёт все файлы по заданной маске в директории и поддиректориях...
|
Сообщ.
#10
,
|
|
|
Не очень понятно. Привык больше к IDE
У меня структура проекта. Соответственно везде перекрестные ссылки с одной на другую. Проект -библиотека1 --/include/*.h --cpp -библиотека2 --/include/*.h --cpp -библиотека3 --/include/*.h --cpp |
Сообщ.
#11
,
|
|
|
Ну, да. Когда нет IDE - приходится руками. Не знаю, как "обычно", но у нас с cmake'ками работают так:
0. Каждый cmake начинается с project() 1. Пишется корневой CMakeList.txt. В нём: - Задаются разнообразные опции сборки (через установку переменных С_FLAGS, CXX_FLAGS, CXX_FLAGS_(DEBUG|RELEASE) ) - Подключаются внешние библиотеки (через find_package() ) - Задаются глобальные пути к include'ам и lib'ам (include_directories, link_directories) - Подключаются cmake'и отдельных подпроектов (через add_subdirectory) 2. В каждой поддиректории создаётся свой CMakeList.txt, который определяет - как собирается конкретная библиотека или исполняемый файл: - Задаётся список исходных/заголовочных файлов (можно с помощью команды file(GLOB, ...)) - Задаются дополнительные include'е-пути, если надо (с помощью того же include_directories) - Задаётся цель сборки с помощью add_executable или add_library. - Задаются дополнительные зависимости (если нужно) - с помощью target_link_libraries() После этого запускается CMake (на корневом файле), и make/nmake. Всё должно собраться и работать. Это, так сказать, азы. Кроме того, можно посмотреть здесь, как это выглядит в коде. |
Сообщ.
#12
,
|
|
|
Спасибо за развернутый ответ!
|