J'essaie de déplacer mon projet vers CMake, tout en ayant une certaine optimisation sur le processus de compilation.CMake: réutilisation des fichiers objet construits pour une lib dans une autre cible lib
est ici l'affaire:
- J'ai plusieurs subdirs qui sont (doivent être) chaque compilé dans une bibliothèque statique (cela fonctionne).
- Je veux regrouper tous les fichiers objets de chaque sous-répertoire dans une autre bibliothèque statique complète et plus volumineuse.
Il ressemble à ceci:
.
libBig.a # made from object from subdir1 and subdir2
subdir1/
src/
libSubdir1.a
subdir2/
src/
libSubdir2.a
Aujourd'hui, je réussi à utiliser une variable globale dans laquelle chaque subdir CMakeLists.txt ajoutera ses propres fichiers source. J'utilise cette variable comme entrée « source » dans ma grande bibliothèque:
# 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
Maintenant, cela fonctionne, pas trop mal, mais la chose est, tous mes fichiers source obtenir compilé deux fois: une fois subdir bibliothèque, et une fois pour la grande bibliothèque. CMake semble oublier qu'il les a déjà construits.
I avoir pour conserver les bibliothèques de sous-répertoires et ar
ne peut pas fusionner deux bibliothèques statiques.
Savez-vous comment faire?
Que vous déplacez à CMake de, de toute façon? Pourquoi? –
De Makefiles à la main! Je veux que ce soit facile à compiler multiplate-forme, facile à intégrer avec les IDE, et j'ai pensé: pourquoi pas? – Gui13