Компиляция OMake с подкаталогами

Просматривая документацию OMake, кажется, что при использовании источников из подкаталогов они всегда сначала компилируются в статические библиотеки. Это всегда необходимо? Могу ли я скомпилировать и связать все без сборки библиотек? Я пытался написать OMakefiles для этого, но безуспешно.

Пример структуры dir:

Мой проект: OMakeroot, OMakefile, main.cpp

myproject / headers: file1.h

myproject / src: file1.cpp


Содержимое моего проекта OMakeroot:

открытая сборка / C

.SUBDIRS:.

Содержимое myproject Omakefile:

CXX = g ++

CXXFLAGS = -Wall

ВКЛЮЧАЕТ += заголовки src

CXXProgram (myapp, основной файл1)


Файлы OMake в заголовках и каталогах src пусты, не уверен, что в них что-то есть.

Когда я запускаю omake myapp, я получаю сообщение об ошибке:

Не знаю, как собрать "file1.o", необходимый для "myapp"

3 ответа

Для дальнейшего использования в случае, если поток исчезнет, ​​вот решение, опубликованное в потоке, на которое ссылается Maxicat (перефразировано, чтобы показать только решение).

Это не тот случай, когда вы должны компилировать в статические библиотеки, но по умолчанию предполагается, что каждый объектный файл находится в том же каталоге, что и исходный файл.

ВКЛЮЧАЕТ += заголовки src

ВКЛЮЧАЕТ только для заголовочных файлов. Тебе нужно

INCLUDES += $(dir headers)
.SUBDIRS: src

(Примечание 1 - порядок предыдущих двух строк важен. Как я и написал, src dir получит обновленный ВКЛЮЧЕНО; если вы этого не хотите, измените порядок этих двух.)

(Примечание 2 - приведенное выше будет ожидать файл src/OMakefile, даже если будет пустой). Вы можете написать что-то вроде

.SUBDIRS: src
   return # A no-op body

"встроить"./src/OMakefile в./OMakefile)

CXXProgram (myapp, основной файл1)

Должно быть

CXXProgram(myapp, main src/file1)

Пытаться src/file1, так что omake знает, что нужно построить src/file1.o вместо file1.oи, следовательно, нуждается src/file1.cpp вместо file1.cpp (который не существует).

Получил это решено в списке рассылки Omake, ссылка на ветку здесь только для полноты: http://lists.metaprl.org/pipermail/omake/2009-July/002094.html

Другие вопросы по тегам