Bibliothèque partagée CMake C++

J’ai récemment décidé de séparer toutes les parties des bibliothèques partagées FlameSteelFramework, puis je montrerai un exemple de fichier CMakeLists.txt pour FlameSteelCore :

cmake_minimum_required(VERSION 3.5)

project (FlameSteelCore)
set(CMAKE_BUILD_TYPE Release)

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)

file(GLOB_RECURSE SOURCE_FILES
    "src/FlameSteelCore/*.cpp"
)

add_library(FlameSteelCore SHARED ${SOURCE_FILES})

install(DIRECTORY "${CMAKE_SOURCE_DIR}/src/FlameSteelCore"
        DESTINATION include/FlameSteelFramework
        FILES_MATCHING
        PATTERN "*.h"
)

install(TARGETS FlameSteelCore DESTINATION lib)

Commandes exécutées par CMake : collecte tous les fichiers avec l’extension *.cpp du répertoire src/FlameSteelCore/ dans une bibliothèque partagée, copie tous les en-têtes avec l’extension *.h de src/FlameSteelCore pour inclure/FlameSteelFramework (dans mon cas c’est /usr/ local/include/FlameSteelFramework), copie la bibliothèque partagée dans le répertoire lib (/usr/local/lib)
Après l’installation, il peut être nécessaire de mettre à jour le cache LD – sudo ldconfig.
Pour construire et installer sur Ubuntu (si vous disposez de la bonne chaîne d’outils de construction), exécutez simplement les commandes suivantes :

cmake . && make && sudo make install

Pour tester le processus d’installation, je passe le préfixe make au dossier local makeInstallTestPlayground :

cmake -DCMAKE_INSTALL_PREFIX:PATH=/home/demensdeum/makeInstallTestPlayground . && make && make install

Références

https : //stackoverflow.com/questions/17511496/how-to-create-a-shared-library-with-cmake
https://stackoverflow.com/questions/6003374/what-is-cmake-equivalent-of-configure-prefix-dir-make-all-install