Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.117.188.64] |
|
Сообщ.
#1
,
|
|
|
Всем привет!
Прошу помощи в конфигурации 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++) A в 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 и vc/mingw? |
Сообщ.
#2
,
|
|
|
Не совсем понятно, в чём вопрос. target_include_directories + target_link_libraries тут почему-то не подходят?
Но вообще обычно сторонние библиотеки подключают через find_package - он найдёт cmake скрипт, проставит нужные переменные и сделает прочие действия, специфические для подключаемой библиотеки. Добавлено Кстати Цитата JoeUser @ В CMakeLists.txt (1) написал: include_directories(sftp++) target_link_libraries(TestSFTP sftp++) Гораздо удобнее это делать, объявляя target_include_directories(sftp++ INTERFACE include_path) в cmakelists библиотеки. Тогда при подключении sftp++ в первом файле тебе достаточно будет указать target_link_libraries, а include подтянутся уже автоматом. |