我正在尝试运行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构建没有错误。
感谢您的帮助。
答案 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)