编译Ogre Next CMake项目失败:无法正确生成构建文件
解决macOS Big Sur下Ogre Next项目CMake+Ninja编译问题
1. 先搞定Ogre Next的路径问题
你通过Mac构建脚本编译完Ogre Next后,默认不会自动把文件放到/usr/local目录,得手动执行安装步骤:
- 回到Ogre Next的编译目录,运行:
执行后OGRE的头文件、库文件会被安装到cmake --build . --target install/usr/local/include/OGRE和/usr/local/lib/OGRE;如果编译时你指定了CMAKE_INSTALL_PREFIX参数,就去你指定的目录找。
要是不想安装,也可以直接用编译后的build目录作为路径,不用硬编码,在CMakeLists.txt里给find_package加PATHS参数就行:
find_package(OGRE REQUIRED COMPONENTS Bites RTShaderSystem PATHS "/你的OgreNext编译build目录绝对路径")
2. 修复Ninja的$转义错误
这个问题一般是CMake生成Ninja文件时,某些路径或变量里的$没正确转义,比如系统环境变量带$,或者Ogre配置里有特殊字符。
排查&修复步骤:
- 打开build.ninja第240行,看具体是什么命令或路径出问题,比如是不是包含了
$HOME这类未转义的环境变量。 - 要是你自己的CMakeLists.txt里用到了带
$的变量,用CMake的转义函数处理:string(ESCAPE_QUOTES 原变量名 转义后变量名) - 如果是Ogre自带的配置文件(比如OgreConfig.cmake)里的问题,找到带
$的路径,把单个$改成$$手动转义。
临时替代方案:
要是转义问题一时搞不定,换用Makefile生成器试试,执行CMake时指定:
cmake -G "Unix Makefiles" ..
之后用make命令编译,能绕过Ninja的转义问题。
3. 检查CMakeLists.txt的配置正确性
确保你的配置和EmptyProject示例对齐,核心部分应该是这样:
cmake_minimum_required(VERSION 3.16) project(MyOgreProject) find_package(OGRE REQUIRED COMPONENTS Bites RTShaderSystem) add_executable(MyOgreProject main.cpp) target_link_libraries(MyOgreProject PRIVATE OgreBites OgreRTShaderSystem)
别漏了Ogre的核心依赖组件,比如OgreMain之类的。
内容的提问来源于stack exchange,提问作者druzek11
相关产品推荐
相关产品推荐

