Chciałbym użyć CMake do powiązania mojego projektu z moją biblioteką współdzieloną. Biblioteka jest dzielona tylko pomiędzy kilkoma projektami i jest raczej mała, więc naprawdę chciałbym ją zbudować, zanim zostanie połączona. Budowanie go za każdym razem wydaje się lepszym pomysłem niż konieczność utrzymywania aktualnej, prekompilowanej wersji, ponieważ ja 10 zmieniam ją razem z projektem. Jest osobny, ponieważ zawiera rzeczy, których prawie na pewno będę potrzebował w następnym projekcie.Używanie CMake do statycznego linkowania do biblioteki poza projektem
Jak skonfigurować CMake, aby to zrobić?
Mój obecny CMakeLists.txt dla danego projektu wygląda następująco:
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)
ale oczywiście kompilacja nie powiedzie się z:
/usr/bin/ld: cannot find -lgrzeslib
Czy to działa, jeśli dodasz .a do nazwy libname? – drescherjm
@drescherjm, biblioteka ta nie jest potencjalnie nawet skompilowana w tym miejscu, ponadto nie określam gdzie binarny byłby, więc jestem pewny, że dodanie .a do nazwy pliku nie pomoże. – Grzenio