Я пытаюсь преобразовать большой проект (с исполняемыми, динамическими 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>)