CMake总是更喜欢将动态库找到静态:
find_library(SQLITE_LIBRARY sqlite3)
message(STATUS "Sqlite found: ${SQLITE_LIBRARY}")
...
-- Sqlite3 found: /usr/lib/x86_64-linux-gnu/libsqlite3.so
我正在使用Debian 7 wheezy
,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 :(得分: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)