CMake: Verwende Objektdateien, die für eine lib erstellt wurden, in ein anderes lib-Ziel

Ich versuche mich zu bewegen, mein Projekt auf CMake, und zur gleichen Zeit haben einige Optimierungen auf die Kompilierung.

Hier ist der deal:

  • Ich habe mehrere Unterverzeichnisse, die sind (müssen), jeweils zusammengestellt in einer statischen Bibliothek (dies funktioniert).
  • Ich will sammeln alle Objekt-Dateien aus jedem Ordner in eine andere größere, komplette, statische Bibliothek.

Sieht es wie folgt aus:

.
libBig.a  # made from object from subdir1 and subdir2
subdir1/
   src/
   libSubdir1.a
subdir2/
   src/
   libSubdir2.a

Heute habe ich es geschafft eine Globale variable verwenden, in der jede subdir CMakeLists.txt angefügt werden Ihre eigenen Quelldateien. Ich benutze diese variable als "source" den Eingang in mein big-Bibliothek:

# the big library depends on all the source files
# ${all_src} is automatically filled with each subdir's cpp file
get_property( BigLib_src GLOBAL PROPERTY all_src)
add_library( Big STATIC ${BigLib_src}) # recompiles all the sources

Nun, das funktioniert, nicht schlecht, aber die Sache ist, alle meine source-Dateien kompiliert zweimal: einmal für den Ordner Bibliothek, und einmal für die große Bibliothek.

CMake scheint zu vergessen, dass es bereits gebaut.

Ich haben zu halten, den Ordner Bibliotheken und ar kann nicht Zusammenführen von zwei statische Bibliotheken.

Wissen Sie, wie Sie das tun?

InformationsquelleAutor der Frage Gui13 | 2011-02-23

Schreibe einen Kommentar