CMAKE共享库仅创建DLL而不创建关联的LIB

Luc*_*uca 5 cmake

我正在使用 CMAKE 为 Visual Studio 配置我的项目,并且我有以下设置:

PROJECT(Proj1)
CMAKE_MINIMUM_REQUIRED(VERSION 3.2.0)
# RPATH stuff - to avoid losing linking information
SET(CMAKE_SKIP_BUILD_RPATH FALSE)
SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)


# Variable for header and source files
SET(HEADERS
  api/mylib.h   
)
SET(SOURCES
  api/mylib.cpp
)

# Compile and link
ADD_LIBRARY(${NAME} SHARED ${HEADERS} ${SOURCES})
TARGET_LINK_LIBRARIES(${NAME} ${LIBS})
Run Code Online (Sandbox Code Playgroud)

现在,这创建了项目,我可以编译它,但它只生成文件Proj1.dll,而不生成关联的lib file. I thought both the library and the shared object file should have been produced.

我正在使用CMAKE 3.11.0Visual Studio Community 2017

小智 -8

要创建静态库 .lib,必须使用 STATIC 关键字而不是 SHARED

ADD_LIBRARY(${NAME} STATIC ${HEADERS} ${SOURCES})
Run Code Online (Sandbox Code Playgroud)

看一下: https ://cmake.org/cmake/help/v3.0/command/add_library.html

  • 该问题询问的是共享库而不是静态库。 (2认同)
  • 如果有人偶然发现此对话,MSVC/Windows 对静态库和导出标头使用相同的文件扩展名 (.lib),这是能够链接到 DLL 所必需的。.lib 文件的存在是编译时要求,而 .dll 文件的存在是运行时要求。 (2认同)