You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake场景下如何将已构建的库及头文件移动到指定项目目录?

手动移动(单次使用场景)

你可以直接在项目根目录(包含foo、bar、cmake-build-debug三个子目录的层级)执行命令完成移动:

  • 移动头文件foo.h:
    Linux/macOS 终端:cp ./foo/include/foo.h ./bar/dependencies/foo/include/
    Windows CMD:copy .\foo\include\foo.h .\bar\dependencies\foo\include\
    Windows PowerShell:Copy-Item .\foo\include\foo.h .\bar\dependencies\foo\include\
  • 移动静态库libfoo.a:
    Linux/macOS 终端:cp ./cmake-build-debug/foo/libfoo.a ./bar/dependencies/foo/lib/
    Windows CMD:copy .\cmake-build-debug\foo\libfoo.a .\bar\dependencies\foo\lib\
    Windows PowerShell:Copy-Item .\cmake-build-debug\foo\libfoo.a .\bar\dependencies\foo\lib\

CMake自动同步(日常开发推荐)

修改foo项目的CMake配置,实现每次构建foo完成后自动把最新的头文件和库同步到bar的依赖目录,无需手动操作,且跨平台兼容:

  1. 打开foo/CMakeLists.txt,在定义foo库的代码(也就是add_library(foo ...)语句之后)添加以下规则:
# 同步头文件到bar的依赖目录
add_custom_command(TARGET foo POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_directory
    ${PROJECT_SOURCE_DIR}/include
    ${PROJECT_SOURCE_DIR}/../bar/dependencies/foo/include
)

# 同步编译生成的静态库到bar的依赖目录
add_custom_command(TARGET foo POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy
    $<TARGET_FILE:foo>
    ${PROJECT_SOURCE_DIR}/../bar/dependencies/foo/lib
)
  1. 如果你配置了顶层CMakeLists.txt,还可以添加依赖声明,实现构建bar时自动先构建foo并同步最新产物:
    在顶层CMakeLists.txt中添加:add_dependencies(bar foo)

如果你的目录层级和示例有差异,调整上述配置里的目标路径即可。

内容的提问来源于stack exchange,提问作者Luna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:54:02