Компиляция 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