如何让CMake直接将共享库安装到指定路径而非lib子目录?
解决方案
当然可以直接配置CMake将共享库安装到${CMAKE_INSTALL_PREFIX}根目录,完全不需要修改LIBRARY_OUTPUT_PATH(该变量仅控制编译阶段的库输出目录,和安装路径互不影响)。
具体做法是在INSTALL命令中直接指定DESTINATION为空字符串或.(两者效果一致,均对应CMAKE_INSTALL_PREFIX的根目录),而不是默认的lib或${CMAKE_INSTALL_LIBDIR}。
举个完整的配置示例:
cmake_minimum_required(VERSION 3.25) project(nvim_lua_module) # 你的现有设置:编译产物输出到test目录 set(LIBRARY_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/test") # 创建共享库(假设你的源文件是nvim_module.c) add_library(nvim_module SHARED nvim_module.c) # 配置安装规则:直接安装到CMAKE_INSTALL_PREFIX根目录 install(TARGETS nvim_module LIBRARY DESTINATION "" # 如果需要兼容Windows,可追加RUNTIME DESTINATION "",但Archlinux下仅需LIBRARY )
使用时,执行安装命令指定Neovim模块的目标路径即可:
cmake --install . --prefix ~/.local/share/nvim/site/lua/your_module_name
这样共享库会直接被安装到你指定的Neovim模块目录下,而不会生成额外的lib子目录,完全符合路径要求。
内容的提问来源于stack exchange,提问作者aszswaz
相关产品推荐
相关产品推荐

