使用CMake和VS从Windows上的现有代码生成dll

问题描述 投票:0回答:1

我已经下载了一个用C ++(OPC UA)编写的SDK,它在使用Visual Studio 2015进行编译时会创建一个.exe文件。它有一堆CMake文件。如何才能看到是否可以从这样的SDK生成.dll? CMake文件是否有这些信息,或者我必须搜索的标题内是否有任何宏? SDK具有我用来创建.exe的Visual Studio示例项目(.sln)。 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之外,我还需要对源代码进行更改吗?

c++ cmake sdk
1个回答
1
投票

它有一堆CMake文件。如何才能看到是否可以从这样的SDK生成.dll?那么,CMake文件是否有这些信息,或者我必须搜索的标题中是否有任何MACROS?

如果CMake项目生成库,则语句add_library必须出现在某处。但请注意,CMakeLists.txt文件的层次结构是可能的,例如,您包含的CMakeLists.txt添加了两个子目录。考虑那里的CMakeLists.txt文件。由于生成了可执行文件,因此对add_executable的调用也必须出现在某处。

我打算使用SDK中的代码。除了更改CMAKE文件以包含dll之外,我还需要对源代码进行更改吗?

我不熟悉这个SDK,但我猜这些示例包含可执行文件的源代码,src包含库的源代码。如果您只想尝试一些,可以修改示例代码或添加新示例。在这种情况下,您只需修改examples目录中的CMakeLists.txt(即添加新的源代码文件)。

如果要将SDK用作外部依赖项,请检查CMake模块列表中是否包含FindNameofmySDK.cmake,或者SDK源代码或安装中是否存在NameofmySDK-config.cmake。在这种情况下,您可以为应用程序创建CMake项目,并使用find_package查找SDK。

© www.soinside.com 2019 - 2024. All rights reserved.