cmake add_library,后跟安装库目标

时间:2014-03-09 04:25:29

标签: cmake

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

文件1是CMakeLists.txt,其中包含:

add_library (MathFunctions SHARED mysqrt.cxx)
install (TARGETS MathFunctions LIBRARY DESTINATION lib)

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

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

当我创建构建子目录并运行“cmake ..”时,我正在

CMake Error at CMakeLists.txt:2 (install):
  install Library TARGETS given no DESTINATION!

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:12)

问题很可能是由于你在CMake称之为“DLL平台”以及CMake如何在这样的平台上对共享库进行分类而运行它。

来自install的文档:

  

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

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

install (TARGETS MathFunctions
         ARCHIVE DESTINATION lib
         LIBRARY DESTINATION lib
         RUNTIME DESTINATION bin)