windows - CMake 安装不在 Windows 上安装库

标签 windows cmake

由于某些原因,下面的 CMake 文件无法安装项目库。它在正确的位置创建目录,甚至递归地安装头文件......但它无法安装库。如何解决?

cmake_minimum_required(VERSION 2.8)
project(MyLib)

include_directories(include)
add_library(MyLib SHARED source/stuff.cpp)

if(CMAKE_SYSTEM MATCHES "Windows")
target_link_libraries(MyLib DbgHelp ws2_32 iphlpapi)
set(CMAKE_INSTALL_PREFIX "../../devel_artifacts")
endif(CMAKE_SYSTEM MATCHES "Windows")

install(TARGETS MyLib LIBRARY DESTINATION "lib"
                      ARCHIVE DESTINATION "lib"
                      COMPONENT library)
install(DIRECTORY include/${PROJECT_NAME} DESTINATION include)

最佳答案

您只是缺少 install(TARGETS...) 中的 RUNTIME DESTINATION 参数命令。

CMake 将共享库视为“DLL 平台”(如 Windows)上的运行时对象。如果您将命令更改为:

install(TARGETS MyLib LIBRARY DESTINATION "lib"
                      ARCHIVE DESTINATION "lib"
                      RUNTIME DESTINATION "bin"
                      COMPONENT library)

然后您应该会发现 MyLib.dll 最终位于“devel_artifacts/bin”中。

关于windows - CMake 安装不在 Windows 上安装库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21592361/

相关文章:

c++ - 使用 cmake 链接自编译的静态库

c# - 打开 Internet 属性并等待用户关闭它 C#

c++ - 如何正确设置 CMakeLists.txt 文件?

c++ - 未处理的异常 Microsoft C++ 异常:cv::Exception at memory location

python - 如何在 Windows 上打开包含选定项目的文件夹

c++ - 如何找到 -lm lib 并将其包含在 CMake 中?

c++ - 链接 SDL2 与 CMake

c++ - CMake -- 将子目录中的所有源添加到 cmake 项目

c++ - 如何找到使我的应用程序变大的代码?

c++ - 使用搜索-ms : or search: protocols to retrieve search results as an IShellItem