2014-07-24 6 views
1

CMake всегда предпочитает, чтобы найти динамическую библиотеку к статическому электричеству:CMake не удается найти статическую библиотеку

find_library(SQLITE_LIBRARY sqlite3) 
message(STATUS "Sqlite found: ${SQLITE_LIBRARY}") 
... 
-- Sqlite3 found: /usr/lib/x86_64-linux-gnu/libsqlite3.so 

Я использую , cmake 2.8.9 и sqlite3-dev пакет. ls /usr/lib/x86_64-linux-gnu/ | grep sqlite3:

libsqlite3.a 
libsqlite3.la 
libsqlite3.so 
libsqlite3.so.0 
libsqlite3.so.0.8.6 

Я пробовал различные методы, которые я нашел в Интернете. Ни один из них не работал:

1. find_library(SQLITE_LIBRARY sqlite3.a) 

2. find_library(SQLITE_LIBRARY libsqlite3.a) 

3. set(CMAKE_LIBRARY_SUFFIXES .a) 
    find_library(SQLITE_LIBRARY sqlite3) 

4. set(CMAKE_FIND_STATIC FIRST) 
    find_library(SQLITE_LIBRARY sqlite3) 

Любые предложения? Спасибо.

ответ

0

Может быть, используя sqlite3 команду, чтобы правильно получить версию:

find_program(SQLITE3_EXECUTABLE NAMES sqlite3DOC "Path to sqlite3 executable") 
execute_process(COMMAND ${SQLITE3_EXECUTABLE} -version OUTPUT_VARIABLE _SQLITE3_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE) 
string(REGEX MATCH "^([0-9]+([.][0-9]+)*)([ \t].*)?$" SQLITE3_VERSION "${_SQLITE3_VERSION}") 
set(SQLITE3_VERSION "${CMAKE_MATCH_1}" CACHE STRING "Version of sqlite3 executable") 
find_library(SQLITE3_LIBRARIES sqlite3) 
Смежные вопросы