Генерация DLL из существующего кода на Windows с использованием CMake и VS - PullRequest
0 голосов
/ 19 февраля 2019

Я скачал SDK, написанный на C ++ (OPC UA), который создает файл .exe при компиляции с Visual Studio 2015. Он содержит несколько файлов CMake.Как можно увидеть, можно ли создать .dll из такого SDK?Есть ли в файлах CMake эта информация или внутри заголовков должны быть какие-то макросы, которые мне нужно искать?В SDK есть примеры проектов Visual Studio (.sln), которые я использую для создания .exe.CMakeLists.txt выглядит следующим образом

project(uasdk)
cmake_minimum_required(VERSION 2.8.0 FATAL_ERROR)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
set_property(GLOBAL PROPERTY USE_FOLDERS ON)

include(CMakeDependentOption)
include(MessageUtils)
display_project_header("true")

if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src")
    add_subdirectory(src)
endif ()

if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/examples")
    add_subdirectory(examples)
endif ()

# set CMAKE_INSTALL_MESSAGE to LAZY by default to hide 'Up to date' output when building INSTALL target
if (NOT ${CMAKE_VERSION} VERSION_LESS "3.1")
    set(CMAKE_INSTALL_MESSAGE LAZY CACHE STRING "")
    set(CMAKE_INSTALL_MESSAGE_VALUES "ALWAYS;LAZY;NEVER")
    set_property(CACHE CMAKE_INSTALL_MESSAGE PROPERTY STRINGS ${CMAKE_INSTALL_MESSAGE_VALUES})
endif ()

Вопросы, которые уже были заданы по этой теме, принадлежат людям, которые пишут свой собственный код.Я намерен использовать код из SDK.Помимо изменения файла CMAKE для включения библиотеки DLL, мне нужно также вносить изменения в исходный код?

1 Ответ

0 голосов
/ 19 февраля 2019

Имеет кучу файлов CMake.Как можно увидеть, можно ли создать .dll из такого SDK?Есть ли в файлах CMake эта информация или должны быть какие-либо MACROS внутри заголовков, которые мне нужно искать?

Если проект CMake генерирует библиотеку, то оператор add_library должен появиться где-то.Однако обратите внимание, что иерархия файлов CMakeLists.txt возможна, например, включенный вами CMakeLists.txt добавляет две подкаталоги.Также рассмотрим файлы CMakeLists.txt.Поскольку исполняемый файл сгенерирован, вызов add_executable должен также появиться где-нибудь.

Я собираюсь использовать код из SDK.Помимо изменения файла CMAKE для включения dll, мне нужно также вносить изменения в исходный код?

Я не знаком с этим SDK, но я думаю, что примеры содержат источники дляисполняемый файл и src содержат источники для библиотеки.Если вы просто хотите что-то попробовать, вы можете изменить пример кода или добавить новый пример.В этом случае вам нужно всего лишь изменить файл CMakeLists.txt в каталоге примеров (то есть добавить новый файл исходного кода).

Если вы хотите использовать SDK в качестве внешней зависимости, проверьте, есть лиFindNameofmySDK.cmake включен в список модулей CMake или есть ли NameofmySDK-config.cmake где-нибудь в источниках SDK или в вашей установке.В этом случае вы можете создать проект CMake для своего приложения и использовать find_package для поиска SDK.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...