Je suis très nouveau à Cmake
, et j'essaye de l'employer comme une alternative à ceci approach, qui ne fonctionnait pas bien.Les objets partagés avec des bibliothèques et des inclusions de répertoire dans Cmake
Ma structure est en fait simple, je:
App/src/
App/src/so1
App/src/so2
App/src/so3
Et dans chaque dossier App/src/soN
, j'ai un fichier .cpp
, qui doit être compilé dans un objet partagé. Je sais que je dois ajouter un fichier CMakeLists.txt
dans chaque dossier ci-dessus, mais je suis vraiment perdu avec le lien et l'inclusion de la bibliothèque.
Par exemple, supposons que il y a les fichiers suivants sous App/src/so1
:
App/src/so1/so1.hpp
App/src/so1/so1.cpp
Et l'objet partagé so1.so
nécessite -I /some/dir/include
, et doit également être lié à -L /some/other/dir/lib -l otherdirlib
. Quelles sont les directives appropriées pour faire cela en utilisant CMake
?
+1 Merci beaucoup pour votre aide, mais je n'ai pas encore été en mesure de produire le makefiles. J'ai quelques questions particulières: qu'est-ce que, dans votre message, déclare que je produis des objets partagés? où est le lien avec les bibliothèques dynamiques ('-L/chemin/vers/mylib -l mylib')? L'inclusion semble fonctionner correctement, je suppose que ces deux sont les seules dépendances à gauche maintenant. Je suis capable d'ajouter le chemin avec 'link_directories (" chemin/vers/mylib ")', mais je ne sais pas quel nom utiliser dans 'target_link_libraries (??? mylib)'. D'après ce que je pense, "???" devrait être remplacé pour chaque ".so" produit. – Rubens
Je n'ai peut-être pas été clair, mais je dois effectivement compiler chaque 'soN/soN.cpp, soN/soN.hpp' dans une bibliothèque partagée, donc il y aurait d'abord un' soN.o', et ensuite, un 'soN.so'. Je suis méchant, je ne vais pas avoir un exécutable unique, je vais juste avoir 'N' des objets partagés' .so'. – Rubens
Oh, ce sont des bibliothèques dynamiques, alors vous avez besoin d'un CMakeLists dans chaque dossier, laissez-moi mettre à jour le poste. – AngelCastillo