Gemeinsame Bibliothek CMake C++

Ich habe vor kurzem beschlossen, alle Teile des FlameSteelFramework in separate gemeinsam genutzte Bibliotheken zu verwandeln. Anschließend zeige ich ein Beispiel einer CMakeLists.txt-Datei für 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)

Befehle, die CMake ausführt: Sammelt alle Dateien mit der Erweiterung *.cpp aus dem Verzeichnis src/FlameSteelCore/ in eine gemeinsam genutzte Bibliothek, kopiert alle Header mit der Erweiterung *.h von src/FlameSteelCore nach include/FlameSteelFramework (in meinem Fall). Dies ist /usr/local/include/FlameSteelFramework), kopiert die gemeinsam genutzte Bibliothek in das Verzeichnis lib (/usr/local/lib)
Nach der Installation kann es erforderlich sein, den LD-Cache zu aktualisieren – sudo ldconfig.
Um auf Ubuntu zu erstellen und zu installieren (wenn Sie über die richtige Build-Toolchain verfügen), führen Sie einfach die folgenden Befehle aus:

cmake . && make && sudo make install

Um den Installationsprozess zu testen, übergebe ich das Make-Präfix an den lokalen Ordner makeInstallTestPlayground:

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

Referenzen

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