Usando o CMake para vincular estaticamente a uma biblioteca fora do projeto
Eu gostaria de usar o CMake para vincular meu projeto à minha biblioteca compartilhada. A biblioteca é compartilhada apenas entre um punhado de projetos e é bastante pequena, então eu realmente gostaria de construí-la antes que ela seja vinculada. Construí-lo sempre parece uma idéia melhor do que ter que manter uma versão pré-compilada atualizada, porque eu tenho que mudá-la junto com o projeto. É separado, porque contém coisas que quase certamente precisarei no próximo projeto.
Como posso configurar o CMake para fazer isso?
Meu CMakeLists.txt atual para o projeto relevante se parece com isto:
find_package( Boost REQUIRED COMPONENTS unit_test_framework)
include_directories(${BaumWelch_SOURCE_DIR}/../../grzesLib/src
${BaumWelch_SOURCE_DIR}/src
${Boost_INCLUDE_DIRS})
if(CMAKE_COMPILER_IS_GNUCXX)
add_definitions(-g -std=c++11 -Wall -Werror -Wextra -pedantic -Wuninitialized)
endif()
# Create the unit tests executable
add_executable(
baumwelchtests stateindextest.cpp baumiterationtest.cpp baumwelchtest.cpp sampleparameters.cpp sdetest.cpp
# Key includes for setting up Boost.Test
testrunner.cpp
# Just for handy reference
exampletests.cpp
)
# Link the libraries
target_link_libraries( baumwelchtests ${Boost_LIBRARIES} baumwelchlib grzeslib)
mas obviamente a compilação falha com:
/usr/bin/ld: cannot find -lgrzeslib