CMake无法找到静态库

时间:2014-07-24 05:54:42

标签: cmake

CMake总是更喜欢将动态库找到静态:

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

我正在使用Debian 7 wheezycmake 2.8.9sqlite3-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)

有什么建议吗?谢谢。

1 个答案:

答案 0 :(得分: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)