C++ cmake:依赖于另一个库的库(sqlite3pp)

C++ cmake:依赖于另一个库的库(sqlite3pp),c++,sqlite,cmake,git-submodules,C++,Sqlite,Cmake,Git Submodules,我正在尝试将cmake库链接到我的应用程序,这反过来又取决于sqlite。因此,依赖关系图如下所示: my_app --> sqlite3pp --> sqlite 一个很好的方法是将sqlite放在libs/sqlite3pp/src中,这对于分发来说太笨拙了(我使用的是git子模块) project |___ src # my project |___ libs # libraries | |___ sqlite3pp | | |

我正在尝试将
cmake
库链接到我的应用程序,这反过来又取决于
sqlite
。因此,依赖关系图如下所示:

my_app  --> sqlite3pp  --> sqlite
一个很好的方法是将
sqlite
放在
libs/sqlite3pp/src
中,这对于分发来说太笨拙了(我使用的是
git子模块)

project
|___ src    # my project
|___ libs   # libraries
|      |___ sqlite3pp
|      |        |___ src
|      |              |___sqlite   # I copy it here; clumsy  :-(
...    ...
sqlite3pp/src/CMakeLists.txt
中使用以下行:

include_directories("${CMAKE_CURRENT_SOURCE_DIR}/sqlite3")
但是,使用
git子模块
会造成很大的混乱,因为我需要修改子模块。因此,我尝试将目录
sqlite
向上拉两层,进入
libs
目录:

project
|___ src    # my project
|___ libs   # libraries
|      |___ sqlite3pp
|               |___ src
|
|___ sqlite   # Now it looks better
...    ...
现在,我尝试的两种方法都不起作用(我对cmake非常陌生):

1) 当我将上述陈述替换为

include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../../sqlite3")
cmake
无法识别相对路径

2) 尝试通过以下行管理
项目/CMakeLists.txt
文件中的链接:

set(sqlite_path "${CMAKE_CURRENT_SOURCE_DIR}/libs/sqlite")
include_directories(sqlite_path)
add_subdirectory( sqlite_path )
add_library(sqlite3 STATIC "${CMAKE_CURRENT_SOURCE_DIR}/libs/sqlite/sqlite3.c")

include_directories("${CMAKE_CURRENT_SOURCE_DIR}/libs/sqlite3pp/src")
add_subdirectory("libs/sqlite3pp/src")


TARGET_LINK_LIBRARIES(sqlite3pp "${CMAKE_CURRENT_SOURCE_DIR}/libs/sqlite/sqlite3.c" )
target_include_directories( sqlite3pp PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/libs/sqlite> )

有什么想法吗?

要解决链接器错误,请使用
Threads
包和
CMAKE\u THREAD\u LIBS\u INIT
变量:

find_package(Threads REQUIRED)
target_link_libraries(libsqlite3pp ${CMAKE_THREAD_LIBS_INIT})

有关详细信息,请参见

magic!非常感谢。在哪里可以阅读“系统线程库”的含义?
find_package(Threads REQUIRED)
target_link_libraries(libsqlite3pp ${CMAKE_THREAD_LIBS_INIT})