<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Как создать Makefile с рекурсией дерикторий.</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8545.html</link>
    <description>0. В документацию не посылать, читал не помогает, читал ещё раз, тоже самое. :)&lt;br&gt;&lt;br&gt;1. Есть проект с деревом каталогов, в котором живут исходники.&lt;br&gt;2. Вот, на половину рабочий Makefile &lt;br&gt;&lt;br&gt;.SUFFIXES =&lt;br&gt;.SUFFIXES = .cpp .o&lt;br&gt;&lt;br&gt;CXX = g++&lt;br&gt;CFLAGS = -g -O2&lt;br&gt;WARN = -W -Wall&lt;br&gt;FLAGS := $(CFLAGS) $(DEBUG) $(WARN)&lt;br&gt;INCLUDE = -I. -I../ -I../../ -I../../../&lt;br&gt;&lt;br&gt;SUBDIRS = alpha/db2  alpha/db3 beta/data gamma/os gamma/os/lnx gamma/os/bsd gamma/os/win&lt;br&gt;&lt;br&gt;.PHONY: subdirs $(SUBDIRS)&lt;br&gt;&lt;br&gt;subdirs: $(SUBDIRS)&lt;br&gt;&lt;br&gt;$(SUBDIRS):&lt;br&gt;        $(MAKE) CXXFLAGS=&quot;$(FLAGS) $(INCLUDE)&quot; -C $(D&#064;) $&#064;&lt;br&gt;&lt;br&gt;# EOF Make&lt;br&gt;&lt;br&gt;3. Исходники живут в директориях $(SUBDIRS), там же живут хедеры.&lt;br&gt;&lt;br&gt;Например каталог gamma/os/lnx, содержит: &lt;br&gt;&lt;br&gt;main_lnx.cpp &lt;br&gt;coops.cpp &lt;br&gt;&lt;br&gt;и каталог include, то есть gamma/os/lnx/include&lt;br&gt;Все зависимости в хедерах разрешены через #inclide, в соответствующих исходниках,&lt;br&gt;с ними проблем нет&lt;br&gt;&lt;br&gt;4. Перед тем как запускать make, в каждом каталоге с исходниками, &lt;br&gt;создаем Makefile c зависимостями. &lt;br&gt;&lt;br&gt;Делаем это командой: &lt;br&gt;&lt;br&gt;g++ -I. -I..</description>

<item>
    <title>Как создать Makefile с рекурсией дерикторий. (аноним)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8545.html#7</link>
    <pubDate>Sun, 13 Dec 2009 03:26:49 GMT</pubDate>
    <description>&amp;gt;Светка ты что ль? :) &lt;br&gt;&lt;br&gt;Хренетка, иди проспись.&lt;br&gt;</description>
</item>

<item>
    <title>Как создать Makefile с рекурсией дерикторий. (pavlinux)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8545.html#6</link>
    <pubDate>Sat, 12 Dec 2009 13:10:41 GMT</pubDate>
    <description>&amp;gt;Если становится неудобно использовать обычный make, лучше песмотреть на что-то более высокоуровневое. &lt;br&gt;&amp;gt;Без вариантов CMake. &lt;br&gt;&lt;br&gt;Светка ты что ль? :)&lt;br&gt;</description>
</item>

<item>
    <title>Как создать Makefile с рекурсией дерикторий. (аноним)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8545.html#5</link>
    <pubDate>Fri, 11 Dec 2009 23:42:49 GMT</pubDate>
    <description>Если становится неудобно использовать обычный make, лучше песмотреть на что-то более высокоуровневое. Без вариантов CMake.&lt;br&gt;</description>
</item>

<item>
    <title>Как создать Makefile с рекурсией дерикторий. (аноним)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8545.html#4</link>
    <pubDate>Fri, 11 Dec 2009 23:40:59 GMT</pubDate>
    <description>&amp;gt;Может быть autotools поможет? &lt;br&gt;&lt;br&gt;Советовать autotools при наличии cmake по меньшей мере глупо, по большей - вредно.&lt;br&gt;</description>
</item>

<item>
    <title>Как создать Makefile с рекурсией дерикторий. (jd)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8545.html#3</link>
    <pubDate>Fri, 11 Dec 2009 20:49:04 GMT</pubDate>
    <description>&amp;gt;&#091;b&#093;1-ая проблема&#091;/b&#093; - на примере того же каталога gamma/os/lnx &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;После создания Makefile c зависимостями, он выглядит следующим образом: &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;main_lnx.o: main_lnx.cpp ./include/main_lnx.h ../os/include/main.h &lt;br&gt;&amp;gt;coops.o: coops.cpp ./include/main_lnx.h ../os/include/main.h &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Когда в этот каталог заходит make -C gamma/os/lnx/ &lt;br&gt;&amp;gt;Компилируется только main_lnx.o, такое ощущение что coops.cpp не видит вообще. &lt;br&gt;&lt;br&gt;А что ему ещё компилировать? По-умолчанию (без указания цели) выполняется первая цель. В вашем случае нужно добавить в начало Makefile что-то вроде (для GNU make):&lt;br&gt;&#091;code&#093;&lt;br&gt;.PHONY: all&lt;br&gt;&lt;br&gt;all: $(subst .cpp,.o,$(wildcard *.cpp))&lt;br&gt;&lt;br&gt;&#091;/code&#093;&lt;br&gt;и будет вам счастье. Точнее, будет вам то, что вы пытаетесь получить.&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt;&#091;b&#093;3-ая проблема&#091;/b&#093; &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Как сделать рекурсивное брождение (от слова бродить) make, по подкаталогам, &lt;br&gt;&amp;gt;а не указание их на прямую $(SUBDIR) ? &lt;br&gt;&lt;br&gt;Всё решает (опять же, для GNU make) $(shell ...) и find.&lt;br&gt;&lt;br&gt;Вообще, если вы используете GNU make, настоятельно рекомендую почитать по нему</description>
</item>

<item>
    <title>Как создать Makefile с рекурсией дерикторий. (pavlinux)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8545.html#2</link>
    <pubDate>Fri, 11 Dec 2009 17:41:08 GMT</pubDate>
    <description>&amp;gt;Может быть autotools поможет? &lt;br&gt;&lt;br&gt;Это всё понятно, но надо минимизировать всё до минимума. (хорошо сказал :)) &lt;br&gt;&lt;br&gt;Есть ещё веселее, autoproject зовётся - http://packages.debian.org/unstable/devel/autoproject&lt;br&gt;&lt;br&gt;Думается, придётся в обратном направлении делать.&lt;br&gt;</description>
</item>

<item>
    <title>Как создать Makefile с рекурсией дерикторий. (primus)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8545.html#1</link>
    <pubDate>Fri, 11 Dec 2009 17:37:06 GMT</pubDate>
    <description>Может быть autotools поможет?&lt;br&gt;Ниже цитата&lt;br&gt;&quot;Automake -- система автоматического создания Makefile&apos;ов для крупных проектов. Automake очень тесно работает совместно с Autoconf, позволяя с помощью буквально двух десятков строк создавать огромные Makefile&apos;ы, которые обрабатывают огромное количество возможностей, по сборке и установке пакета, к которым привыкли все пользователи современных программ с открытыми исходниками.&quot;&lt;br&gt;Здесь начало http://squadette.ru/autotools-ru/article1.html&lt;br&gt;</description>
</item>

</channel>
</rss>
