2009-07-05 14 views
0

En parcourant la documentation d'OMake, il semble que chaque fois que des sources de sous-répertoires sont utilisées, elles sont toujours compilées dans des bibliothèques statiques. Est-ce toujours nécessaire? Puis-je compiler et lier tout sans construire les bibliothèques? J'ai essayé d'écrire OMakefiles pour cela mais sans succès.Compilation d'OMake avec des sous-répertoires

Exemple de structure dir:

myproject: OMakeroot, OMakefile, main.cpp

monprojet/en-têtes: file1.h

myproject/src: file1.cpp


myproject Contenu OMakeroot:

open build/C

.SUBDIRS:.

monprojet contenu Omakefile:

CXX = g ++

CXXFLAGS = -Wall

INCLUDES + = en-têtes src

CXXProgram (monapp, principal fichier_1)


OMak Les fichiers efiles dans les en-têtes et les répertoires src sont vides, pas sûrs que quelque chose doive y figurer.

Quand je lance monapp de omake je reçois une erreur:

Je ne sais pas comment construire « file1.o » nécessaire pour « myapp »

Répondre

0

Essayez src/file1, de sorte que omake sait qu'il a besoin pour construire src/file1.o au lieu de file1.o, et a donc besoin de src/file1.cpp au lieu de file1.cpp (qui n'existe pas).

1

Pour référence ultérieure, dans le cas où le fil disparaît, est la solution ici affichée sur le fil qui Maxicat fait référence à (reformulé à montrer juste la solution).

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)