powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Организовать оптимально Makefile
25 сообщений из 57, страница 2 из 3
Организовать оптимально Makefile
    #38286496
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ШироковМы, например, благодаря CMake, перешли с Visual Studio 6 на Visual Studio 10 за две недели и то только потому, что надо было выравнивать исходники в плане их компилируемости.

Ну ладно, Толь, не скромничай, за две недели-то мы управились толко потому, что ты у нас такой гениальный.
Но CMake всё равно классный.
...
Рейтинг: 0 / 0
Организовать оптимально Makefile
    #38286608
LowCoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Благодарю всех ответивших - есть очень толковые советы.
...
Рейтинг: 0 / 0
Организовать оптимально Makefile
    #38286638
LowCoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне непонятно только - я сделал для пробы. Общая папка в ней две подпапки где собственно лежат два проекта с++ со своими Makefile. Каждый их этих Makefile имеет цель all. Если в общей папочки я напишу Makefile следующего вида

Код: plaintext
1.
2.
include $(PWD)/subfolder1/Makefile
include $(PWD)/subfolder2/Makefile



то соберется только тот проект который во второй папке а сам make наругает что

Код: plaintext
1.
2.
3.
$:~/projfolder$ make
/home/cooluser/projfolder/subfolder1/Makefile:2: warning: overriding commands for target `all'
/home/cooluser/projfolder/subfolder2/Makefile:11: warning: ignoring old commands for target `all'



а почему? по идее все инклюды же должны просто исполнятся и все...
...
Рейтинг: 0 / 0
Организовать оптимально Makefile
    #38286663
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LowCoder,

Вам выше уже писали - не надо include.
Вам надо запускать вложенный экземпляр make для подпроектов
...
Рейтинг: 0 / 0
Организовать оптимально Makefile
    #38287117
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LowCoder
а почему? по идее все инклюды же должны просто исполнятся и все...

И я тоже писал. В одном makefile таргеты должны быть уникальны.
В разных -- не обязаны.
Если ты делаешь include , то ты соединяешь всё в один make-файл.
Соответственно, таргеты должны быть уникальны во всех файлах.
...
Рейтинг: 0 / 0
Организовать оптимально Makefile
    #38287346
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivWhite OwlЯ абсолютно убежден что CMake (да и autotools) это ненужный костыль с гигантскими ограничениями. Ты абсолютно неправ.
Как бы чтобы это доказать, достаточно поискать в сети проекты аналогичного назначения и прочитать мотивацию к их созданию.
Очень хорошо это написано в Ant е.
Почитай.Чтобы доказать что я прав: достаточно вспомнить что и CMake и autotools выдают на выходе makefile который будет исполняться тем-же самым make. Спрашивается, чем кроме костыля эти инструменты могут быть?
А мотивация создания у костыля только одна - человек не может ходить на своих родных ногах, вот и изобретает дополнительные.

Мотивация для создания Ant чуть более серьезная: у Sun был своя версия Solaris-only сборщика и когда Sun начала выкладывать свои проекты в открытый доступ этот собственный сборщик был переписан в кросс-платформенный.
Почему у Sun был свой собственный сборщик, тоже более-менее понятно - коммерческая контора боялась использовать открытый инструмент.

Как это все делает меня неправым в моем предыдущем утверждении?
...
Рейтинг: 0 / 0
Организовать оптимально Makefile
    #38287398
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlMasterZivпропущено...
Ты абсолютно неправ.
Как бы чтобы это доказать, достаточно поискать в сети проекты аналогичного назначения и прочитать мотивацию к их созданию.
Очень хорошо это написано в Ant е.
Почитай.Чтобы доказать что я прав: достаточно вспомнить что и CMake и autotools выдают на выходе makefile который будет исполняться тем-же самым make. Спрашивается, чем кроме костыля эти инструменты могут быть?
А мотивация создания у костыля только одна - человек не может ходить на своих родных ногах, вот и изобретает дополнительные.


Рассуждение на уровне - yacc, lex костыль для тех кто матрицу переходов LALR грамматики составлять сам не хочет. Всегда следует отдавать предпочтение абстрактному описанию с последующей кодогенерацией ручному кодированию. Резон очень прост - всегда соскочить можно просто меняя кодогенератор. Как ты можешь соскочить с make мне не очень понятно.
...
Рейтинг: 0 / 0
Организовать оптимально Makefile
    #38287406
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С своей фирме мы достигли достаточного уровня лаконизма описания проекта, чтобы рекламировать CMake как достойное средство. Чтобы не быть голословным:
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
project (APPSERVER)

file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Generated)

set(GSOAP_GENERATED_SRCS 
	${CMAKE_CURRENT_BINARY_DIR}/Generated/soapc.cpp
	${CMAKE_CURRENT_BINARY_DIR}/Generated/soaprolisappserviceproxy.cpp
	${CMAKE_CURRENT_BINARY_DIR}/Generated/soaprolisappserviceproxy.h
	${CMAKE_CURRENT_BINARY_DIR}/Generated/soaph.h
	${CMAKE_CURRENT_BINARY_DIR}/Generated/soapstub.h
)

add_custom_command(
	OUTPUT ${GSOAP_GENERATED_SRCS}
	COMMAND ${SOAPCPP2} -I${GSOAP_DIR}/import -d${CMAKE_CURRENT_BINARY_DIR}/Generated -i -C -L -x ${CMAKE_CURRENT_SOURCE_DIR}/service.sdh
	DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/service.sdh
)       

include_directories(BEFORE . ${CMAKE_CURRENT_BINARY_DIR}/Generated)
include_directories(${GSOAP_DIR})
include_directories(BEFORE . ${APPSERVER_BINARY_DIR}/Generated)
include_directories(${rolis_SOURCE_DIR}/thirdparty/gsoap)

rolis_library( appserver
    COMPILE_FLAGS
		${GSOAP_DEFINES}
		${OPENSSL_DEFINES}
		${ZLIB_DEFINES}
    SOURCES
		${GSOAP_GENERATED_SRCS}
		client.cpp
		${GSOAP_DIR}/stdsoap2.cpp
		${GSOAP_DIR}/stdsoap2.h
		${rolis_SOURCE_DIR}/rolis/appserverproxy.h
		appserverproxy.cpp
		service.sdh
    DEPENDS
		textutils
    LINK_LIBS
		${OPENSSL_LIBS}
		${ZLIB_LIBS}
    STATIC
)
...
Рейтинг: 0 / 0
Организовать оптимально Makefile
    #38287407
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На выходе работы cmake мы имеем не только solution или makefile для билдмашины, но и xml описание зависимостей модулей, которое поставляется update service и обеспечивает обновление модулей по требованию (много их у нас). И это имея лишь абстрактное описание проекта - имхо, неплохие бенефиты.
...
Рейтинг: 0 / 0
Организовать оптимально Makefile
    #38287444
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlMasterZivпропущено...
Ты абсолютно неправ.
Как бы чтобы это доказать, достаточно поискать в сети проекты аналогичного назначения и прочитать мотивацию к их созданию.
Очень хорошо это написано в Ant е.
Почитай.Чтобы доказать что я прав: достаточно вспомнить что и CMake и autotools выдают на выходе makefile который будет исполняться тем-же самым make. Спрашивается, чем кроме костыля эти инструменты могут быть?
А мотивация создания у костыля только одна - человек не может ходить на своих родных ногах, вот и изобретает дополнительные.

Мотивация для создания Ant чуть более серьезная: у Sun был своя версия Solaris-only сборщика и когда Sun начала выкладывать свои проекты в открытый доступ этот собственный сборщик был переписан в кросс-платформенный.
Почему у Sun был свой собственный сборщик, тоже более-менее понятно - коммерческая контора боялась использовать открытый инструмент.

Как это все делает меня неправым в моем предыдущем утверждении?


Ты абсолютно неправ. Прогресс не остановить. Ура.
...
Рейтинг: 0 / 0
Организовать оптимально Makefile
    #38287455
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы доказать что я прав: достаточно вспомнить что и CMake и autotools выдают на выходе makefile который будет исполняться тем-же самым make. Спрашивается, чем кроме костыля эти инструменты могут быть?

Универсальным решением про сборке.
Как бы твои рассуждения сводятся к тому, что самая первая реализация самая правильная.

А мотивация создания у костыля только одна - человек не может ходить на своих родных ногах, вот и изобретает дополнительные.


Ну да если он наступает на ногу, а нога гнется, то да, без костылей не обойтись...

Мотивация для создания Ant чуть более серьезная:


Ты НЕ прочитал. А зря. Там очень все доходчиво было.
Основная идея — что make не переносим и не самодостаточен. Если ты будешь с этими фактами ещё и спорить — то уж и не знаю что тебе говорить.
...
Рейтинг: 0 / 0
Организовать оптимально Makefile
    #38287634
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ШироковWhite Owlпропущено...
Чтобы доказать что я прав: достаточно вспомнить что и CMake и autotools выдают на выходе makefile который будет исполняться тем-же самым make. Спрашивается, чем кроме костыля эти инструменты могут быть?
А мотивация создания у костыля только одна - человек не может ходить на своих родных ногах, вот и изобретает дополнительные.


Рассуждение на уровне - yacc, lex костыль для тех кто матрицу переходов LALR грамматики составлять сам не хочет.Принцип верен, но расстояние между CFG и исходником с LALR намного больше чем разница между входным файлом CMakeList.txt и makefile.
Не смотря на то, что я делал ручные переводы из CFG в LALR (два раза в код на О'Caml, один раз в С) я не смогу сходу взять любую грамматику и закодировать автомат для нее. Но взяв любой CMakeList.txt я могу почти сходу написать соответствующий makefile. Подглядеть в доку на CMake понадобится пару раз, но и только.
Так что нужность Яка с кузенами я признаю, нужность CMake - не признаю.

Анатолий ШироковВсегда следует отдавать предпочтение абстрактному описанию с последующей кодогенерацией ручному кодированию. Резон очень прост - всегда соскочить можно просто меняя кодогенератор.Здесь ключевое слово "абстрактному описанию". У CMake описание совсем не абстрактное, а очень даже конкретное.

Анатолий ШироковКак ты можешь соскочить с make мне не очень понятно.А зачем мне с него соскакивать, простите?
...
Рейтинг: 0 / 0
Организовать оптимально Makefile
    #38287639
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivТы абсолютно неправ. Прогресс не остановить. Ура.Да, да. Все знают что я ретроград и пещерный человек.
...
Рейтинг: 0 / 0
Организовать оптимально Makefile
    #38287794
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тема очень кстати. Как раз выбораем билд-систему для перевода vs-проекта под linux - кажется CMake то что нужно. У кого есть поделитесь е-книжкой Mastering CMake желательно 5th или 4th edition, что-то она не особо гуглится.
...
Рейтинг: 0 / 0
Организовать оптимально Makefile
    #38288088
Фотография v6y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivУ cmake есть один смысл — он человеческий, в отличие от make, autotools и многого другого. И работает, в отличие от boostbuild и другого человеческого в этой области.

Я прошу прощения что лезу в ваш калашниковый ряд, но по-моему cmake и autotool ставить в один ряд с make мягко говоря некорректно... У них несколько разные цели и задачи:

The purpose of the make utility is to determine automatically which pieces of a large program need to be recompiled, and issue the commands to recompile them. (И на мой скромный взгляд, ничего более вменяемого чем make для этой цели ещё не придумали)

The "cmake" executable is the CMake command-line interface. It may be used to configure projects in scripts.
...
Рейтинг: 0 / 0
Организовать оптимально Makefile
    #38288146
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ШироковНа выходе работы cmake мы имеем не только solution или makefile для билдмашины, но и xml описание зависимостей модулей, которое поставляется update service и обеспечивает обновление модулей по требованию (много их у нас). И это имея лишь абстрактное описание проекта - имхо, неплохие бенефиты.

Надо ещё добавить, что с его CMake помощью мы ещё и перешли с vc6 сразу и на vc7, и на vc 2010,
И автоматом получили систему сборки для Linux.
...
Рейтинг: 0 / 0
Организовать оптимально Makefile
    #38288155
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v6yЯ прошу прощения что лезу в ваш калашниковый ряд,

Ничего, ничего.
только ряд калашный, а не
калашниковый.


v6yно по-моему cmake и autotool ставить в один ряд с make мягко говоря некорректно... У них несколько разные цели и задачи:


Ровно одни и те же у них задачи.

v6yThe purpose of the make utility is

То мейк, я бы сказал. Собирать проекты.
Те же цели и у всех остальных.
...
Рейтинг: 0 / 0
Организовать оптимально Makefile
    #38288296
Фотография v6y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivТо мейк, я бы сказал. Собирать проекты.
Те же цели и у всех остальных.

Не согласен. У cmake задача сконфигурировать проект для его дальнейшей компиляции (то бишь учесть всяко-разные ньюансы как то наличие тех или иных библиотек, версию операционки и т.д.), а у make задача скомпилировать проект на основании правил прописанных в Makefile. Поэтому, с моей точки зрения, и make и cmake в крайнем случае уместно рассматривать только как части чего-то более целого и ни в коем случае не сравнивать их между собой.

Спор между Анатолием и WhiteOwl собственно и сводится к тому, что (если рассматривать немного упрощено) Анатолий предпочитает генерировать Makefile с помощью cmake, а WhiteOwl писать его (Makefile) руками.
...
Рейтинг: 0 / 0
Организовать оптимально Makefile
    #38288371
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v6yУ cmake задача сконфигурировать проект для его дальнейшей компиляции (то бишь учесть всяко-разные ньюансы как то наличие тех или иных библиотек, версию операционки и т.д.), а у make задача скомпилировать проект на основании правил прописанных в Makefile
Вы так говорите, как будто запустить компиляцию из сгенерированных скриптов - это огромная работа, а не одна команда шелла.
Фаза запуска компиляции никого не интересует при сравнении утилит сборки.
Важна предоставляемая функциональность всей системы, а также уровень абстракции.
Вы можете писать программу на ассемблере и гордится тем что знаете ассемблер, а другой за то же время сделает десяток программ на С (хоть при необходимости и на ассемлере сможет писать). Потому что уровень абстракции очень сильно влияет на скорость и качество разработки.
...
Рейтинг: 0 / 0
Организовать оптимально Makefile
    #38288389
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlАнатолий ШироковВсегда следует отдавать предпочтение абстрактному описанию с последующей кодогенерацией ручному кодированию. Резон очень прост - всегда соскочить можно просто меняя кодогенератор.Здесь ключевое слово "абстрактному описанию". У CMake описание совсем не абстрактное, а очень даже конкретное.

Я не случайно привел описание одного из наших проектов, чтобы показать, что синтаксис описания вполне себе пригоден для звания "абстрактного описания". Артефакты не имеющие к этому описанию конечно присутствуют, но тоже достаточно легко поддаются анализу, если он потребуется.

White OwlАнатолий ШироковКак ты можешь соскочить с make мне не очень понятно.А зачем мне с него соскакивать, простите?

Вопрос твой ожидаемый. Но мало ли, захочешь подебажить свой проект под студией. Я себе это могу повзолить просто сгенерировав solution под конкретную версию студии? А ты как этого достигаешь? Конечно, если речь идет о небольшом проекте, то можно и накидать на коленке студийный проект, но когда у тебя 600 модулей со сложными взаимосвязями, то здесь без чего-либо отвязанного от конкретной среды сборки просто необходимо.
...
Рейтинг: 0 / 0
Организовать оптимально Makefile
    #38288472
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v6yMasterZivТо мейк, я бы сказал. Собирать проекты.
Те же цели и у всех остальных.

Не согласен. У cmake задача сконфигурировать проект для его дальнейшей компиляции


CMake -- система сборки. Её задача -- собирать. То же самое у make.
Не надо тут играть словами и смыслами, и то, и другое, собирает выполняемые файлы из исходных текстов.
Всё очень просто и ясно до предела.

То, что CMake для этой цели использует make-файлы иногда -- это не принципиально, можно было бы написать бэкенд для CMAKE, который бы сам собирал всё.
Просто у CMake как у проекта задача именно такая -- обеспечить возможность работать с твоим CMake-проектом в любых средах сборки или программирования.
...
Рейтинг: 0 / 0
Организовать оптимально Makefile
    #38288505
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ШироковWhite OwlА зачем мне с него соскакивать, простите?

Вопрос твой ожидаемый. Но мало ли, захочешь подебажить свой проект под студией. Я себе это могу позволить просто сгенерировав solution под конкретную версию студии. А ты как этого достигаешь? Конечно, если речь идет о небольшом проекте, то можно и накидать на коленке студийный проект, но когда у тебя 600 модулей со сложными взаимосвязями, то здесь без чего-либо отвязанного от конкретной среды сборки просто нельзя.

Вот нужные и важные слова про Make, про его недостатки.
Это из документации по Ant, Java-based build tool.

Ant docsIntroduction

Apache Ant is a Java-based build tool. In theory, it is kind of like make, without make's wrinkles.
Why?

Why another build tool when there is already make, gnumake, nmake, jam, and others? Because all those tools have limitations that Ant's original author couldn't live with when developing software across multiple platforms. Make-like tools are inherently shell-based : they evaluate a set of dependencies, then execute commands not unlike what you would issue on a shell . This means that you can easily extend these tools by using or writing any program for the OS that you are working on; however, this also means that you limit yourself to the OS , or at least the OS type, such as Unix, that you are working on.

...

Ant is different. Instead of a model where it is extended with shell-based commands, Ant is extended using Java classes . Instead of writing shell commands, the configuration files are XML-based, calling out a target tree where various tasks get executed. Each task is run by an object that implements a particular Task interface.

Granted, this removes some of the expressive power that is inherent in being able to construct a shell command such as `find . -name foo -exec rm {}`, but it gives you the ability to be cross-platform--to work anywhere and everywhere . And hey, if you really need to execute a shell command, Ant has an <exec> task that allows different commands to be executed based on the OS it is executing on.



(выделено жирным мной)

Я не считаю Ant идеальным, но этот проект -- минимальное усилие, которое надо было давно уже до появления ant-а сделать, чтобы получить человеческую среду сборки.
...
Рейтинг: 0 / 0
Организовать оптимально Makefile
    #38288997
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ШироковWhite Owlпропущено...
Здесь ключевое слово "абстрактному описанию". У CMake описание совсем не абстрактное, а очень даже конкретное.

Я не случайно привел описание одного из наших проектов, чтобы показать, что синтаксис описания вполне себе пригоден для звания "абстрактного описания". Нет, не пригоден. Хорошо, перефразирую: Уровень абстракции у CMake абсолютно такой же как и у make.

Абстрактное описание сборки (как я его понимаю) это то что у меня есть на уровне корня проекта: Собрать специальные инструменты используемые для сбора программы, собрать промежуточные библиотеки, собрать программу, собрать плагины. Причем именно в этом порядке (хотя плагины можно собирать и параллельно с программой).

Вот пример:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
subdirs = tools app app-libs plugins 
.PHONY: $(subdirs)

all: $(subdirs)

app plugins: app-libs

app-libs: tools

# стандартная цель
clean-subdirs = $(addsuffix .clean,$(subdirs))

clean: $(clean-subdirs)

# И наконец правила для обработки целей
$(subdirs):
	$(MAKE) -C $@

$(clean-subdirs):
	$(MAKE) -C $(basename $@) clean



То что в своем CMakeList.txt ты не показываешь как конкретно надо компилировать .cpp ничего не значит. Я в своем makefile тоже могу этого не показывать.
Вот тебе makefile от одного из плагинов:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
PROJECT=ba_zip
SOURCES=ba-zip.c unzip.c ioapi.c

BUILD_DIR=.build
OBJECTS = $(addprefix $(BUILD_DIR)/, $(SOURCES:.c=.o))
CFLAGS  = $(shell pkg-config --cflags gtk+-2.0 gmodule-2.0) -I../../app $(CFLAG_PIC)
LDFLAGS = -shared $(shell pkg-config --libs gtk+-2.0 gmodule-2.0) -lz
CC = gcc

$(bin_dir)/$(PROJECT).$(lib_suffix): $(OBJECTS)

$(OBJECTS): | $(BUILD_DIR)

$(BUILD_DIR):
	mkdir -p $(BUILD_DIR)

clean:
	rm -f $(PROJECT)
	rm -rf $(BUILD_DIR)

# А в config.mak у меня задаются bin_dir и ОС-зависимый суффикс для динамических библиотек.
include ../config.mak


Как видишь, количество кода описывающего сценарий точно такое-же как и у CMake. Уровень абстракции описания тоже совпадает.


Анатолий ШироковWhite Owlпропущено...
А зачем мне с него соскакивать, простите?Вопрос твой ожидаемый. Но мало ли, захочешь подебажить свой проект под студией. Я себе это могу повзолить просто сгенерировав solution под конкретную версию студии? А ты как этого достигаешь? Конечно, если речь идет о небольшом проекте, то можно и накидать на коленке студийный проект, но когда у тебя 600 модулей со сложными взаимосвязями, то здесь без чего-либо отвязанного от конкретной среды сборки просто необходимо.Смеешься?!
600 модулей написанных для одного компилятора запихнуть в другой компилятор и просто так подебажить? Ну-ну... То-то тут постоянно возникают вопросы: "почему в vc это работает а в g++ не работает?", и наоборот. А ты сводишь всю сложность межкомпиляторного перехода к переводу сценария сборки? Шутник.

И нет, я не захочу дебажить проект под студией. Во первых, для дебага есть логи, во вторых dbg. Зачем мне студия?
...
Рейтинг: 0 / 0
Организовать оптимально Makefile
    #38289003
Фотография v6y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivCMake -- система сборки. Её задача -- собирать. То же самое у make.
Не надо тут играть словами и смыслами, и то, и другое, собирает выполняемые файлы из исходных текстов.
Всё очень просто и ясно до предела.

Да вот мне тоже казалось, что тут всё просто и ясно: основная задача CMake именно подготовить к сборке в той или иной среде, задача же make - сама сборка как таковая.

Просто у CMake как у проекта задача именно такая -- обеспечить возможность работать
с твоим CMake-проектом в любых средах сборки или программирования.

Совершенно верно. А задача make автоматически определить какие части большой программы перекомпилировать и с помощью каких команд. Казалось бы различие в целях и задачах на лицо, ан нет же... :-)
...
Рейтинг: 0 / 0
Организовать оптимально Makefile
    #38289006
Фотография v6y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskyv6yУ cmake задача сконфигурировать проект для его дальнейшей компиляции (то бишь учесть всяко-разные ньюансы как то наличие тех или иных библиотек, версию операционки и т.д.), а у make задача скомпилировать проект на основании правил прописанных в Makefile
Вы так говорите, как будто запустить компиляцию из сгенерированных скриптов - это огромная работа, а не одна команда шелла.
Фаза запуска компиляции никого не интересует при сравнении утилит сборки.
Важна предоставляемая функциональность всей системы, а также уровень абстракции.
Вы можете писать программу на ассемблере и гордится тем что знаете ассемблер, а другой за то же время сделает десяток программ на С (хоть при необходимости и на ассемлере сможет писать). Потому что уровень абстракции очень сильно влияет на скорость и качество разработки.

Не совсем понял какое это имеет отношение к высказанному мной мнению, что сравнение cmake и make не является корректным.
...
Рейтинг: 0 / 0
25 сообщений из 57, страница 2 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / Организовать оптимально Makefile
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]