2009-07-05 2 views
0

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

Пример реж:

MyProject: OMakeroot, OMakefile, main.cpp

MyProject/заголовки: file1.h

MyProject/SRC: file1.cpp


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

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

. SUBDIRS:.

MyProject Omakefile содержание:

CXX = G ++

CXXFLAGS = -Wall

ВКЛЮЧАЕТ + = заголовки в исходные тексты

CXXProgram (MYAPP, основная file1)


OMAK efiles в заголовках и каталогах src пусты, не уверен, что в них что-то должно быть.

Когда я бегу MyApp Бонус-байка я получаю сообщение об ошибке:

Не знаю, как построить «file1.o» требуется для «MyApp»

ответ

0

Try src/file1, так что знает, что Бонус-байка ему нужно для построения src/file1.o вместо file1.o и поэтому нуждается в src/file1.cpp вместо file1.cpp (которого не существует).

1

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

It is not the case that you have to compile into static libraries, but the default assumption is that each object file goes into the same directory as the source file.

INCLUDES += headers src

INCLUDES is only for the header files. You need

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

(Note1 - the order of the previous two lines is important. The way I wrote it, the src dir would get the updated INCLUDES; if you do not want that, reorder the two.)

(Note2 - the above would expect an src/OMakefile file, even though an empty one would do. You could write something like

.SUBDIRS: src 
    return # A no-op body 

to "inline" the ./src/OMakefile into the ./OMakefile)

CXXProgram(myapp, main file1)

Should be

CXXProgram(myapp, main src/file1) 
Смежные вопросы