Добавление зависимостей в библиотеку stati c с использованием CMake в Visual studio 2017 не работает - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь преобразовать большой проект (с исполняемыми, динамическими c библиотеками и stati c библиотеками) в систему сборки CMake. У меня проблемы с добавлением зависимостей в библиотеки stati c.

У меня есть root CMake, который будет вызывать список подкаталогов

cmake_minimum_required(VERSION 3.8.0)
project(CC)
add_subdirectory(SmartCardUtility)
add_subdirectory(CertificateUtil)
..

Файл CMakeLists.txt в CertificateUtil выглядит следующим образом.

project(CertificateUtil CXX)
source grouping....
include_directories(${PROJECT_NAME} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/../../Output/_INC_DEV")
link_directories("${CMAKE_CURRENT_SOURCE_DIR}/../../OpenSSL")
add_library(${PROJECT_NAME} STATIC ${ALL_FILES})
target_link_libraries(${PROJECT_NAME} libcrypto)

В приведенном выше фрагменте кода, если add_library заменен на add_executable или add_library на SHARED, то зависимости разрешаются правильно и отображаются в Additional_Dependencies, но для статической c lib, Additional_Dependencies на странице свойств всегда пуста ,

После просмотра net вокруг этой точки я понимаю, что команда target_link_libraries ничего не добавляет в библиотекаря. Тогда возникает вопрос: как правильно добавить зависимости в библиотеки stati c, чтобы они отображались в Additional_Dependencies в Librarian?

Я пытался добавить зависимости как импортированные объекты, как показано ниже, но все же это не так не работает.

add_library(libcrypto OBJECT IMPORTED)
set_property(TARGET libcrypto PROPERTY  IMPORTED_OBJECTS "${CMAKE_CURRENT_SOURCE_DIR}/../../OpenSSL/libcrypto.lib")
add_library(${PROJECT_NAME} STATIC ${ALL_FILES} $<TARGET_OBJECTS:libcrypto>)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...