cmake add_library,后跟安装库目标

jra*_*and 8 cmake

我正在尝试运行cmake来生成makefile.在最小的工作示例中,我有三个文件和一个构建目录.

文件1是CMakeLists.txt,包含:

add_library (MathFunctions SHARED mysqrt.cxx)
install (TARGETS MathFunctions LIBRARY DESTINATION lib)
Run Code Online (Sandbox Code Playgroud)

文件2是包含函数原型的MathFunctions.h,函数与mysqrt.cxx有关.

文件3是包含include语句和函数定义的mysqrt.cxx.

当我创建一个构建子目录并运行"cmake .."时,我得到了

CMake Error at CMakeLists.txt:2 (install):
  install Library TARGETS given no DESTINATION!
Run Code Online (Sandbox Code Playgroud)

是不是我的add_library,那么install语句语法是否正确?如果我删除了SHARED和LIBRARY,则cmake构建没有错误.

谢谢你的帮助.

Fra*_*ser 12

问题可能取决于你在CMake所谓的"DLL平台"上运行这个问题,以及CMake如何在这样的平台上对共享库进行分类.

来自以下文档install:

对于DLL平台,共享库的DLL部分被视为RUNTIME目标,相应的导入库被视为ARCHIVE目标.包括Cygwin在内的所有基于Windows的系统都是DLL平台.

因此,尝试将命令更改为:

install (TARGETS MathFunctions
         ARCHIVE DESTINATION lib
         LIBRARY DESTINATION lib
         RUNTIME DESTINATION bin)
Run Code Online (Sandbox Code Playgroud)