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

如何在CMake项目中引入未生成config.cmake的外部项目组件

问题原因

你找不到config.cmake是正常现象:opensim-models是纯资源仓库,它自带的CMakeLists.txt仅做资源文件的安装规则定义,没有编写CMake包导出逻辑,也没有编译任何库/可执行目标,编译完成后自然不会生成可供find_package()调用的包配置文件,不需要反复检查编译流程是否出错。

可行操作方案

你不需要手动逐个拷贝资源文件,选以下任意一种方案即可完成引入:

方案1:手动编译安装后引用

你之前仅执行了编译命令,没有执行安装步骤,先补全安装流程,建议不要把资源装到系统默认目录,指定到你自己项目的第三方依赖目录方便管理:

cd clonedproj/build
# 替换后面的路径为你自己项目下存放第三方依赖的实际路径
cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/your/project/3rdparty/opensim-models
make -j$(nproc)
make install

安装完成后,指定的安装前缀目录下会直接生成Models、Geometry等你需要的资源文件夹,在你自己项目的CMakeLists.txt中直接引用路径即可:

# 定义缓存变量,方便不同环境下修改路径
set(OPENSIM_MODELS_DIR "" CACHE PATH "Local path of installed opensim-models resources")

# 校验路径有效性
if(NOT IS_DIRECTORY "${OPENSIM_MODELS_DIR}/Models")
  message(FATAL_ERROR "Please set valid OPENSIM_MODELS_DIR path, cannot find Models directory under given path")
endif()

# 用法1:代码中需要加载资源时,直接通过编译宏传入资源根路径
add_compile_definitions(OPENSIM_RES_ROOT="${OPENSIM_MODELS_DIR}")

# 用法2:打包时把资源拷贝到你自己项目的输出/安装目录
install(DIRECTORY "${OPENSIM_MODELS_DIR}/Models" "${OPENSIM_MODELS_DIR}/Geometry"
        DESTINATION ${CMAKE_INSTALL_PREFIX}/resources/opensim)

配置你自己的项目时,传入-DOPENSIM_MODELS_DIR=/path/to/your/project/3rdparty/opensim-models参数即可完成关联。

方案2:自动拉取引入(推荐,无需手动克隆编译)

直接用CMake内置的FetchContent模块,在你自己项目配置阶段自动拉取对应版本的仓库资源,省去手动克隆、编译、安装的步骤:
在你自己项目的CMakeLists.txt中添加以下内容:

include(FetchContent)
FetchContent_Declare(
  opensim_models
  GIT_REPOSITORY https://github.com/opensim-org/opensim-models.git
  GIT_TAG v4.0 # 建议替换为你需要的固定版本tag/commit哈希,避免上游更新导致资源不一致
)
FetchContent_MakeAvailable(opensim_models)

# 拉取完成后会自动生成opensim_models_SOURCE_DIR变量,指向仓库本地根目录
if(NOT IS_DIRECTORY "${opensim_models_SOURCE_DIR}/Models")
  message(FATAL_ERROR "Failed to fetch opensim-models resources")
endif()

# 后续资源引用、拷贝逻辑和方案1完全一致
add_compile_definitions(OPENSIM_RES_ROOT="${opensim_models_SOURCE_DIR}")
install(DIRECTORY "${opensim_models_SOURCE_DIR}/Models" "${opensim_models_SOURCE_DIR}/Geometry"
        DESTINATION ${CMAKE_INSTALL_PREFIX}/resources/opensim)
注意事项

这个仓库没有任何编译产物,本质就是一堆模型、几何文件的集合,完全不需要硬套find_package()的库引入流程,只要拿到资源目录的正确路径,按你项目的实际需求做路径关联、资源拷贝即可。

内容的提问来源于stack exchange,提问作者Ali Baradaran Birjandi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:03:21