如何在CMakeLists.txt中引入无Config.cmake的MuJoCo库及解决依赖问题
解决CMake引入MuJoCo时找不到mujocoTargets.cmake的问题
问题根源
你编译MuJoCo后,build根目录下的mujocoConfig.cmake是为安装后路径准备的,它默认会去标准安装目录查找mujocoTargets.cmake,而非build目录里CMakeFiles/Export/lib/cmake/mujoco下的临时导出文件,这就是报错的核心原因。
解决方案一:标准安装MuJoCo(推荐)
通过make install将MuJoCo安装到系统或自定义路径,让CMake能自动识别正确的配置文件:
- 重新编译并安装MuJoCo:
cd mujoco mkdir build && cd build # 可选:指定自定义安装路径,比如~/mujoco_install cmake .. -DCMAKE_INSTALL_PREFIX=~/mujoco_install make -j$(nproc) make install - 在你的项目CMakeLists.txt中指定安装路径下的配置目录:
# 替换成你的安装路径对应的cmake目录 set(mujoco_DIR "~/mujoco_install/lib/cmake/mujoco") find_package(mujoco REQUIRED) # 将MuJoCo库链接到你的项目目标 add_executable(your_app main.cpp) target_link_libraries(your_app PRIVATE mujoco::mujoco)
解决方案二:直接使用build目录的临时导出文件
如果不想执行安装步骤,直接用编译后的build文件,需要把mujoco_DIR指向包含mujocoTargets.cmake的具体子目录,而非build根目录:
# 注意:路径要精确到导出targets的目录,不是build根目录 set(mujoco_DIR "/mujoco/build/CMakeFiles/Export/lib/cmake/mujoco") find_package(mujoco REQUIRED) # 链接MuJoCo库到项目 add_executable(your_app main.cpp) target_link_libraries(your_app PRIVATE mujoco::mujoco)
补充:关于mujocoConfig.cmake.in的作用
仓库里的mujocoConfig.cmake.in是CMake配置模板文件,不需要你手动修改或调用——当你编译MuJoCo源码时,CMake会自动基于这个模板生成最终的mujocoConfig.cmake文件(包括build目录下的临时版本和安装后的正式版本)。
内容的提问来源于stack exchange,提问作者Ant
相关产品推荐
相关产品推荐

