Recentemente, decidi separar todas as partes do FlameSteelFramework em bibliotecas compartilhadas. Depois, mostrarei um exemplo de um arquivo CMakeLists.txt para 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)
Comandos que o CMake executa: coleta todos os arquivos com extensão *.cpp do diretório src/FlameSteelCore/ em uma biblioteca compartilhada, copia todos os cabeçalhos com extensão *.h de src/FlameSteelCore para include/FlameSteelFramework (no meu caso este é /usr/local/include/FlameSteelFramework), copia a lib compartilhada para o diretório lib (/usr/local/lib)
Após a instalação, pode ser necessário atualizar o cache LD – sudoldconfig.
Para compilar e instalar no Ubuntu (se você tiver o conjunto de ferramentas de compilação correto), basta executar os seguintes comandos:
cmake . && make && sudo make install
Para testar o processo de instalação, passo make prefix para a pasta local makeInstallTestPlayground:
cmake -DCMAKE_INSTALL_PREFIX:PATH=/home/demensdeum/makeInstallTestPlayground . && make && make install
Referências
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