cmake: подключение библиотеки к библиотеке

Прошу помощи в конфигурации cmake. Сегодня первый день вожусь с cmake и сабж не получается. Делаю тестовый проект, структура его такова:

C:\Projects\c++\TestSFTP\
 ├─ main.cpp
 ├─ CMakeLists.txt (1)
 └─ sftp++\
     ├─ sftp_auth.cpp
     ├─ sftp_tools.cpp
     ├─ sftp++.cpp
     ├─ sftp_auth.h
     ├─ sftp_defs.h
     ├─ sftp++.h
     └─ CMakeLists.txt (2)

CMakeLists.txt (1)

cmake_minimum_required(VERSION 3.5)

project(TestSFTP LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
 
set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
set(SOURCE_EXE main.cpp)

include_directories(sftp++)

add_executable(TestSFTP ${SOURCE_EXE})

add_subdirectory(sftp++)

target_link_libraries(TestSFTP sftp++)

CMakeLists.txt (2)

cmake_minimum_required(VERSION 3.5)

project(sftp++)

set(SOURCE_LIB
      sftp++.cpp
      sftp_auth.cpp
      sftp_tools.cpp
)

set(HEADER_LIB
      sftp++.h
      sftp_defs.h
      sftp_auth.h
)

if(CMAKE_SIZEOF_VOID_P EQUAL 8)
    set(BITS x64)
elseif()
    set(BITS x32)
endif()

message("Bits ${BITS}")

add_library (sftp++ STATIC ${SOURCE_LIB} ${HEADER_LIB})

Пока все линкуется и собирается. Но мне нужно подключить внешнюю либу libssh2 к моей собираемой sftp++, а она у меня находится тут для shared:

  • C:/Projects/c++/libssh2/vs-x64-shared/bin
  • C:/Projects/c++/libssh2/vs-x64-shared/include
  • C:/Projects/c++/libssh2/vs-x64-shared/lib

Или тут для static:

  • C:/Projects/c++/libssh2/vs-x64-static/include
  • C:/Projects/c++/libssh2/vs-x64-static/lib

Собственно, вопрос

Куда и что прописать, чтобы создаваемая мною либа sftp++ могла использовать libssh2 (статически и динамически)?

И попутно ... в конфиге я определяю битность, в которую собирается проект. А можно ли как-то подобным образом определить static/shared и MSVC/mingw?


Ответы (0 шт):