Vorrei utilizzare CMake per collegare il mio progetto alla mia libreria condivisa. La libreria è condivisa solo tra una manciata di progetti ed è piuttosto piccola, quindi mi piacerebbe davvero costruirla prima che sia collegata. Costruirlo ogni volta sembra un'idea migliore di dover mantenere una versione precompilata aggiornata, perché io decimo di cambiarla insieme al progetto. È separato, perché contiene cose di cui quasi certamente avrò bisogno nel prossimo progetto.Utilizzo di CMake per il collegamento statico a una libreria esterna al progetto
Come posso configurare CMake per farlo?
Il mio attuale CMakeLists.txt per il progetto in questione è simile al seguente:
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)
ma ovviamente la compilazione fallisce con:
/usr/bin/ld: cannot find -lgrzeslib
Funziona se si aggiunge .a al libname? – drescherjm
@drescherjm, questa libreria non è potenzialmente nemmeno compilata a quel punto, inoltre non specificherò dove dovrebbe essere il binario, quindi sono sicuro che l'aggiunta di .a alla libname non aiuterà. – Grzenio